我已阅读有关本机 sql 查询的 Doctrine2 文档。它没有谈论由多对多关系加入的实体。我不知道如何处理,任何想法或示例。
问问题
1680 次
1 回答
4
您只需手动将连接表添加到 sql 中。扩展 Doctrine 手册第 14 章中的示例:
$rsm = new ResultSetMapping;
$rsm->addEntityResult('User', 'u');
$rsm->addFieldResult('u', 'id', 'id');
$rsm->addFieldResult('u', 'name', 'name');
$rsm->addJoinedEntityResult('Address' , 'a', 'u', 'address');
$rsm->addFieldResult('a', 'address_id', 'id');
$rsm->addFieldResult('a', 'street', 'street');
$rsm->addFieldResult('a', 'city', 'city');
$sql = 'SELECT u.id, u.name, a.id AS address_id, a.street, a.city FROM users u ' .
'INNER JOIN address__user j ON u.id = j.user '.
'INNER JOIN address a ON a.id = j.address '.
'WHERE u.name = ?';
$query = $this->_em->createNativeQuery($sql, $rsm);
$query->setParameter(1, 'romanb');
$users = $query->getResult();
此示例假定您的连接表具有字段地址和用户作为其键。
于 2012-12-05T04:59:48.933 回答