KSIAZKI
id PK
tytul
AUTORZY
id PK
imie
nazwisko
KSIAZKI_AUTORZY
id_ksiazki PK
id_autorzy PK
Czyli jedna książka może mieć wielu autorów i jeden autor może być w wielu książkach.
action.class.php:
<?php class bibliotekaActions extends sfActions { public function executeIndex(sfWebRequest $request) { $this->ksiazki_list = Doctrine::getTable('Ksiazki')->getWszystko(); } } ?>
indexSuccess.php:
Zapytanie w KsiazkiTable.class.php:
<?php class KsiazkiTable extends Doctrine_Table { public function getWszystko() { $q = Doctrine_Query::create() ->select('k.*, a.imie AS imie, a.nazwisko AS nazwisko') ->from('Ksiazki k') ->leftJoin('k.KsiazkiAutorzy ka') ->leftJoin('ka.Autorzy a'); return $q->execute(); } } ?>
Czyli w przetłumaczeniu:
<?php ?>
Powyższe zapytanie po wklejeniu do phpmyadmina zwraca poprawne wartości czyli np.
1 Ksiazka1 Aleksander Fredro
1 Ksiazka1 Adam Mickiewicz
2 Ksiazka2 null null
Tymczasem na stronie jest to wyswietlane tak jakby ta sama ksiazka nie mogla sie powtorzyc czyli:
1 Ksiazka1 Aleksander Fredro
2 Ksiazka2 null null
Zniknęło: 1 Ksiazka1 Adam Mickiewicz
Dlaczego

////////////////////////////////////////////////////////////////////////////
W pliku indexSuccess.php dałem na końcu:
<?php
$polaczenie=mysql_connect ("localhost", "root", "") or die ("Nie można połączyć się z MySQL");
mysql_select_db ("baza_ksiazek") or die ("Nie można połączyć się z bazą cwphp");
$z = mysql_query ("SELECT k.id AS k__id, k.tytul AS k__tytul, a.imie AS a__0, a.nazwisko AS a__1 FROM ksiazki k LEFT JOIN ksiazki_autorzy k2 ON k.id = k2.id_ksiazki LEFT JOIN autorzy a ON k2.id_autorzy = a.id");
while ($wiersz = mysql_fetch_assoc ($z))
{
$tytul = $wiersz['k__tytul'];
echo "$tytul <br/>";
}
?>
Wyświetliło mi poprawnie 3 tytuły
