Я не совсем понимаю, как работает DQL, и мне действительно нужна помощь.
У меня есть три таблицы, называемые "Band", "Agent" и "BandAgent".
BandAgent - это средняя таблица для отношения «многие ко многим», содержащая agent_id и band_id.
Как получить все агенты, связанные с конкретным band_id, с помощью оператора DQL?
РЕДАКТИРОВАТЬ
Этот код работает, но я не знаю, является ли это правильным способом сделать это.Вывод на экран всех связанных агентов, связанных с группой, по BandID:
//$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'];
}