$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);
残念ながら、Zend_Db_Table
リレーションシップインターフェイスには、宣言された参照マップからの結合クエリの作成に関連するインテリジェンスがあまりありません。複雑なクエリに対するコミュニティ提供のソリューションは、Zend_Db_Table_Select
です。 クエリファクトリ。
メーカーの名前と説明の列エイリアスを指定する必要があることに注意してください。そうしないと、これらの列によって、行データの連想配列内のモデルの名前と説明が抑制されます。これを避けるために、列には明確に名前を付ける必要があります。
ただし、あなたの場合は、テーブルインターフェイスと選択インターフェイスをスキップし、Dbアダプタを使用してSQLクエリを直接実行します。
$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%'");
Zend_Db_Table_Rowset
としてではなく、連想配列の単純な配列としてデータを取得します。 。ただし、結合された行セットはとにかく書き込み可能ではないため、それほど犠牲にすることはありません。