php - Doctrine2 原生查询多对多

标签 php mysql symfony doctrine-orm

我已阅读有关 native sql 查询的 Doctrine2 文档。 它不讨论由 ManyToMany 关系连接的实体。 我不知道如何处理,任何想法或例子。

最佳答案

您只需手动将连接表添加到 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();

此示例假设您的连接表具有字段 address 和 user 作为其键。

关于php - Doctrine2 原生查询多对多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13653546/

相关文章:

javascript - 如何使用 javascript 在页面加载时设置值?

php - LAravel 5.4 : Response from controller to blade by Ajax (laravel, json_encode() 期望参数 2 为整数,给定对象)

php - 在 PowerPC Mac 上安装用于 PHP 的 MongoDB 驱动程序到 XAMPP

mysql - 在 Symfony2 中仅使用今天的日期和月份从 MySQL 数据库中检索记录

symfony - 使用多个实体管理器解析目标实体

php - 如何格式化重音字母(如法语字母)?

mysql - 嵌套查询未在 MariaDB 中使用 nodeJS 调用

mysql - WordPress 和 Haversine 公式

sql - MySQL查询: How to get body concatenation from test1 with space as joint,得到 "something1 something2"?

php - Laravel - 如何在进度条上设置消息