...  5   6   7   8   9   10   11   12  ...

Propel. Porady

9. Porada #9: Relacja 1:n, metoda getXs()

Obiekty połączone relacją 1:n są wyposażone w metody, o nazwie getXs() udostępniające dane stojące w relacji. Litera X w nazwie metody jest zastępowana nazwą odpowiedniej tabeli.

Jeśli tabele poeta i wiersz połączymy relacją 1:n (każdy poeta może być autorem wielu wierszy), to w klasie Poeta pojawi się metoda getWierszs(). Metoda ta będzie zwracała obiekty klasy Wiersz:

Oto skrypt drukujący tytuły wierszy poety o identyfikatorze 3:

$poeta = PoetaPeer::retrieveByPK(3);
foreach ($poeta->getWierszs() as $wiersz) {
  echo $wiersz->getTytul();
}

Metoda getWierszs() zwraca wyniki nieuporządkowane. Możemy ją nadpisać w klasie Poeta, by w rezultacie otrzymać metodę getWierszs(), która zachowując pełną funkcjonalność domyślnie zwraca wyniki posortowane alfabetycznie.

W drugą stronę korzystamy z odwołań kaskadowych. Oto jak ustalić nazwisko poety, który napisał wiersz o identyfikatorze 7:

$wiersz = WierszPeer::retrieveByPK(7);
echo $wiersz->getPoeta()->getImie();
...  5   6   7   8   9   10   11   12  ...