$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);
Helaas is de Zend_Db_Table
relaties-interface bevat niet veel intelligentie met betrekking tot het maken van samengevoegde query's op basis van de gedeclareerde referentiekaart. De door de gemeenschap bijgedragen oplossing voor complexe vragen is de Zend_Db_Table_Select
vraag fabriek.
Merk op dat u kolomaliassen moet opgeven voor de naam en beschrijving van de fabrikant, anders zullen deze kolommen de naam en beschrijving van het model onderdrukken in de associatieve array voor de rijgegevens. U moet kolommen duidelijk een naam geven om dit te voorkomen.
Maar in jouw geval zou ik de tabelinterface en de select-interface overslaan en gewoon een SQL-query rechtstreeks uitvoeren met behulp van de Db-adapter:
$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%'");
U krijgt de gegevens terug als een eenvoudige reeks associatieve arrays, niet als een Zend_Db_Table_Rowset
. Maar aangezien een samengevoegde rijenset toch niet beschrijfbaar is, heb je niet veel opgeofferd.