我对 DQL 的工作方式感到困惑,在这里真的需要一些帮助。
我有三个表,分别称为“Band”、“Agent”和“BandAgent”。
BandAgent 是多对多关系的中间表,包含 agent_id 和 band_id。
如何使用 DQL 语句检索与特定 band_id 相关的所有代理?
编辑
这段代码有效,但我不知道这是否是正确的方法。通过 BandID 在屏幕上回显与某个 Band 相关的所有关联 Agent:
//$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 的内容,并最终离开了 Magic Finders。以下代码是我最终为我的多对多问题所做的,如果有人感兴趣的话:
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'];
}