Mamy dwie klasy modeli:
<?php
class Accounts extends Zend_Db_Table_Abstract
{
protected $_name = 'accounts';
protected
$_dependentTables = array('Bugs');}
?>
<?php
class Bugs extends Zend_Db_Table_Abstract
{
protected $_name = 'bugs';
protected
$_dependentTables = array('BugsProducts'); protected
$_referenceMap = array( 'columns' => 'reported_by',
'refTableClass' => 'Accounts',
'refColumns' => 'account_name'
),
'columns' => 'assigned_to',
'refTableClass' => 'Accounts',
'refColumns' => 'account_name'
),
'columns' => array('verified_by'), 'refTableClass' => 'Accounts',
'refColumns' => array('account_name') )
);
}
?>
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?