mysql - 如何使用 Doctrine 2 的带连接的 NativeQuery 编写 SQL 查询?

标签 mysql sql doctrine-orm inner-join nativequery

我想编写一个涉及使用“UNION”(DQL 不支持)的查询,因此我尝试使用 Doctrine 2 的 NativeQuery 编写一个 MySQL 查询。我一直在使用 Doctrine 的 documentation .

到目前为止我的代码包括:

$rsm = new ResultSetMapping();
$rsm->addEntityResult('\Entities\Query', 'q');
$rsm->addFieldResult('q', 'id', 'id');
$rsm->addFieldResult('q', 'title', 'title');
$rsm->addFieldResult('q', 'deadline', 'deadline');

$query = $this->_em->createNativeQuery('SELECT query.id, query.title, query.deadline FROM query', $rsm);
$aQuery = $query->getResult();

$aQuery = $query->getResult();

foreach($aQuery as $o){
    echo '<p>';
    echo 'id: '.$o->getId().'<br/>';
    echo 'title: '.$o->getTitle().'<br/>';
    echo 'deadline: '.$o->getDeadline()->getTimestamp().'<br/>';  
    echo '</p>';die;
}

这将返回预期的结果。但是,当我尝试在查询中引入第二个表/实体时遇到问题:

$rsm->addJoinedEntityResult('\Entities\Status', 's', 'q', 'status');
$rsm->addFieldResult('s', 'id', 'id', '\Entities\Status');

这些行抛出:Notice: Undefined index: id 消息。我不明白这是为什么。

查询表有一个 'status_id' 列,它是引用 'status' 表的 'id' 列的外键。在查询实体类中,我将状态属性映射如下:

/**
 * @var Status
 *
 * @ManyToOne(targetEntity="Status")
 * @JoinColumns({
 *   @JoinColumn(name="status_id", referencedColumnName="id")
 * })
 */
private $status;

以及相关的 get 和 set 方法。

我花了很多时间试图解决这个问题。如果有人能阐明这一点,我们将不胜感激。

最佳答案

您可以像下面这样在任何存储库中编写您的查询,然后您将得到预期的答案。这样你就可以使用 MySQL 的任何 SQL 函数了

public function yourFunction()
    {

        $em    = $this->getEntityManager()->getConnection();
        $sql = "YOUR DESIRE SQL"; // like SELECT * FROM users

        try {
            return $em->query($sql)->fetchAll();
        } catch (\Doctrine\ORM\NoResultException $e) {
            return null;
        }
    }

关于mysql - 如何使用 Doctrine 2 的带连接的 NativeQuery 编写 SQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21731966/

相关文章:

php - php 中的问题处理日期

mysql - 左连接但不能将左表中的每个类别保留在右表中

mysql - 创建数据库时,CHARACTER SET 和 COLLATE 中的 default 做了什么?

MYSQL 转换数据

php - 查询后使用php从多行中检索信息

postgresql - Symfony/Doctrine - 我已经存在

MySQL 树结构数据库 - 复制节点的最佳方式?

c# - ASP.NET : Cannot add or update child row: a foreign key constraint fails

php - 在不同条件下对单列进行计数

postgresql - 学说迁移包和 postgres 架构 : diff does not work properly