$models = new Models();
$select = $models->select(Zend_Db_Table::SELECT_WITH_FROM_PART);
$select->setIntegrityCheck(false)
->join(array("a"=>"manufacturers"), 'models.manufacturer_id = a.id',
array("man_name"=>"name", "man_description"=>"description"))
->where("a.name LIKE 'A%'");
$rowset = $models->fetchAll($select);
Niestety Zend_Db_Table
Interfejs relacji nie ma w sobie zbyt dużej inteligencji związanej z tworzeniem zapytań łączonych z zadeklarowanej mapy odniesienia. Opracowanym przez społeczność rozwiązaniem dla złożonych zapytań jest Zend_Db_Table_Select
fabryka zapytań.
Pamiętaj, że musisz podać aliasy kolumn dla nazwy i opisu producenta, w przeciwnym razie kolumny te pominą nazwę i opis modelu w tablicy asocjacyjnej dla danych wiersza. Powinieneś wyraźnie nazwać kolumny, aby tego uniknąć.
Ale w twoim przypadku pominąłbym interfejs tabeli i interfejs select i po prostu wykonałbym zapytanie SQL bezpośrednio za pomocą adaptera Db:
$data = $db->fetchAll("
SELECT m.*, a.name AS man_name, a.description AS man_description
FROM Models m JOIN Manufacturers a ON m.manufacturer_id = a.id
WHERE a.name LIKE 'A%'");
Otrzymasz dane z powrotem jako prostą tablicę tablic asocjacyjnych, a nie jako Zend_Db_Table_Rowset
. Ale ponieważ połączony zestaw wierszy i tak nie jest zapisywalny, nie poświęciłeś wiele.