4
我讀過關於原生sql查詢的Doctrine2文檔。 它沒有討論通過ManyToMany關係連接的實體。 我沒有想到如何處理這個,任何想法或例子。Doctrine2原生查詢ManyToMany
我讀過關於原生sql查詢的Doctrine2文檔。 它沒有討論通過ManyToMany關係連接的實體。 我沒有想到如何處理這個,任何想法或例子。Doctrine2原生查詢ManyToMany
您只需手動將連接表添加到sql。在擴展教義手冊CHPT 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();
這個例子假設你的連接表的字段處理和用戶爲它的鍵。
只是簡單,比你 – loicb
@Lighthart在你的查詢中有一個問題。你爲多個表使用'j'別名。你爲什麼在連接之間使用'AND'? – hardik
固定。由於這已經超過一年了,我認爲OP簡單地在他自己的代碼中修正了模擬。 – Lighthart