Grzegorz P.

Grzegorz P. CodeTwo sp. z o.o.
sp. k.

Temat: Formularze i JOIN

Witam!
Na początek chciałbym przywitać serdecznie wszystkich, jako że jest to mój pierwszy post na tym forum.

Zastanawiam się czy istnieje jakiś sposób aby ograniczyć ilość zapytań do DB podczas rozwiązywania następującego problemu.

Mamy dwie tabele, 'passenger' i 'address'. Oczywiście tabele są połączone ze sobą relacją.

Stworzyłem sobie też formularze, odpowiednie pola, reguły walidacji etc.

Teraz problem - chcąc wyświetlić dane pasażera z jego adresem wykonuję polecenie (np):
$passenger = PassengerPeer::retrieveByPK(7);

potem tworzę formularze:
$this->form_psng = new PassengerForm($passenger);
$this->form_address = new AddressForm($passenger->getAddress());

I w widoku:
<?=$form_psng->render() ?>
<?=$form_address->render() ?>

I w ten sposób ilość zapytań jest wprost proporcjonalna do ilości potencjalnych relacji. Tutaj 2.

Próbowałem takiej konstrukcji:
$c = new Criteria();
$c->add(PassengerPeer::ID,7));
$c->addJoin(PassengerPeer::ADDRESS_ID, AddressPeer::ID);
$passenger= PassengerPeer::doSelectOne($c);

potem tworzenie formularzy dokradnie tak jak wyżej... i ilość zapytań do DB jest dokładnie taka sama - z tym, że pierwsze... faktycznie jest zapytaniem do dwóch tabel połączonych relacyjne.

Zna ktoś z Was sposób na rozwiązanie tego problemu?

Pozdrawiam!

Temat: Formularze i JOIN

$list = PassengerPeer::doSelectJoinAddress($c);
if isset($list[0])
{
$passenger = $list[0]
}
else
{
//jakas obsluga błędu czy coś...
}

p.s. $c->addJoin(PassengerPeer::ADDRESS_ID, AddressPeer::ID);
jest nie potrzebne w tym przypadku bo doSelectJoinAddress juz doda za Ciebie takie złączenie.Jaroslaw Jarmołowicz edytował(a) ten post dnia 26.09.08 o godzinie 11:48

Następna dyskusja:

[Sf2] formularze i D2 - upd...




Wyślij zaproszenie do