<?php class Accounts extends Zend_Db_Table_Abstract { protected $_name = 'accounts'; } ?>
<?php class Bugs extends Zend_Db_Table_Abstract { protected $_name = 'bugs'; 'columns' => 'reported_by', 'refTableClass' => 'Accounts', 'refColumns' => 'account_name' ), 'columns' => 'assigned_to', 'refTableClass' => 'Accounts', 'refColumns' => 'account_name' ), 'refTableClass' => 'Accounts', ) ); } ?>
W pierwszej ustawiamy zależne klasy modeli, a więc klasa "Accounts" zależy od klasy "Bugs". W klasie "Bugs" zaś ustawiamy referencje tej klasy dla modelu "Acconuts". Zauważyć należy, że są ustawione 3 różne referencje - każde z innym pole relacji pomiędzy tablicami.
Przykład użycia:
<?php $accountsTable = new Accounts(); // inicjacja "Account" $accountsRowset = $accountsTable->find(1234); // wyszukanie usera o ID 1234 $user1234 = $accountsRowset->current(); // pobiera bieżący wiersz $bugsAssignedToUser = $user1234->findDependentRowset('Bugs', 'Engineer'); // pobiera model z referencji tablicy "Bugs" i jednej z ustalonych trzech ról - tutaj "Engineer" $bugs1234 = $bugsAssignedToUser->current(); // bieżący wiersz referencyjnej tablicy $name = $user1234->name; // nazwa uzytkownika $bug = $bugs1234->message; // wiadomosc o bledzie ?>
Trochę to skomplikowane chcąc pobrać jedno pole z tablicy Account i jedno pole z tablicy Bugs. Czy nie da się tego uprość?
Jak znaleźć rekord, gdzie warunek występuję w obu tablicach? Np. accounts.id = 1234 AND bugs.code = 1.
Czy jest w stanie ktoś pomóc mi w tym temacie? Czy nikt z Was nie bawił się ZF?