DQLがどのように機能するかについて混乱しているので、ここで本当に助けが必要です。
「Band」、「Agent」、「BandAgent」という3つのテーブルがあります。
BandAgentは、agent_idとband_idを含む、多対多の関係の中間テーブルです。
DQLステートメントを使用して特定のband_idに関連するすべてのエージェントを取得するにはどうすればよいですか?
編集
このコードは機能しますが、それが正しい方法かどうかはわかりません。BandbyBandIDに関連するすべての関連エージェントを画面にエコーします。
//$band is a Band Table Row
$bandAgentTable = Doctrine_Core::getTable('BandAgent');
$agentTable = Doctrine_Core::getTable('Agent');
$bandAgentTable = $bandAgentTable->findByBandId($band->getId());
foreach ($bandAgentTable as $bandAgent) {
$agent = $agentTable->findById($bandAgent['agent_id']);
echo $agent[0]['name'];
}
編集2
私はDoctrineについてたくさん読んでしまい、MagicFindersから離れてしまいました。次のコードは、誰かが興味を持っている場合、多対多の問題に対して私がやったことです。
public function getRelatedAgents() {
$q = Doctrine_Query::create()
->from('Band b')
->leftJoin('b.Agents a')
->where('b.id = ?', $this->getId());
$bands = $q->fetchArray();
return $bands[0]['Agents'];
}