我有三张桌子,分别叫“乐队”、“特工”和“班达金特”。
如何使用DQL语句检索与特定band\u id相关的所有代理?
编辑
//$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
最后我读了很多关于教义的书,最后离开了魔法发现者。如果有人感兴趣的话,下面的代码就是我为我的多对多问题所做的:
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']; }
条令提供 Magic Finders .
$bandAgentTable = Doctrine_Core::getTable('BandAgent'); $bandAgentTableSearch = $bandAgentTable->findByBand($band);
这将搜索列 Band 在桌子上 BandAgent $band .
Band
BandAgent
$band
搜寻者的基本模式 方法如下: findBy%s($value) 或 findOneBy%s($value) . 这个 %s 可以是一个 列名或关系别名。如果 你想要的价值。如果你 指定关系别名,可以 或者传递 找到关系类,或给出 实际主键值。
findBy%s($value)
findOneBy%s($value)
%s
更新:
$agent = $bandAgentTable->findByBandIdAndId($band->getId(), $bandAgent['agent_id']);