【发布时间】:2012-07-05 14:11:46
【问题描述】:
我所追求的是以下 SQL 查询
SELECT p.*
FROM player p
WHERE CONCAT(p.first_name, ' ', p.last_name) = ?
在 DQL 中。到目前为止我所拥有的是
$qb->add('select', 'p')
->add('from', 'VNNCoreBundle:Player p')
->add('where', $qb->expr()->eq(
$qb->expr()->concat('p.firstName', $qb->expr()->concat(' ', 'p.lastName')),
':name'
))
->setParameters(array('name' => $name));
但那是错误的。
我知道我总是可以使用本机 SQL 获取记录的 ID,然后执行 findOneById() 以使用 Doctrine 获取记录。一方面,这样做感觉像是一种杂耍/黑客,另一方面,在 DQL 中执行直接 SQL 中的简单查询感觉有点愚蠢,因为 DQL 没有形成要非常优雅。无论如何,我已经投入了这么多时间,现在我很好奇在 DQL 中正确的做法是什么。
【问题讨论】:
标签: sql doctrine-orm dql