symfony2条令选择IFNULL
好的,我有这个代码:symfony2条令选择IFNULL,symfony,doctrine,query-builder,ifnull,Symfony,Doctrine,Query Builder,Ifnull,好的,我有这个代码: SELECT IFNULL(s2.id,s1.id) AS effectiveID, IFNULL(s2.status, s1.status) AS effectiveStatus, IFNULL(s2.user_id, s1.user_id) as effectiveUser, IFNULL(s2.likes_count, s1.likes_count) as effectiveLikesCount FROM statuses AS s1 LEFT JOIN st
SELECT
IFNULL(s2.id,s1.id) AS effectiveID,
IFNULL(s2.status, s1.status) AS effectiveStatus,
IFNULL(s2.user_id, s1.user_id) as effectiveUser,
IFNULL(s2.likes_count, s1.likes_count) as effectiveLikesCount
FROM statuses AS s1
LEFT JOIN statuses AS s2 ON s2.id = s1.shared_from_id
WHERE s1.user_id = 4310
ORDER BY effectiveID DESC
LIMIT 15
我需要把它改写成querybuilder。像这样的
$fields = array('IFNULL(s2.id,s1.id) AS effectiveID','IFNULL(s2.status, s1.status) AS effectiveStatus', 'IFNULL(s2.user_id, s1.user_id) as effectiveUser','IFNULL(s2.likes_count, s1.likes_count) as effectiveLikesCount');
$qb=$this->_em->createQueryBuilder()
->select($fields)
->from('WallBundle:Status','s1')
->addSelect('u')
->where('s1.user = :user')
->andWhere('s1.admin_status = false')
->andWhere('s1.typ_statusu != :group')
->setParameter('user', $user)
->setParameter('group', 'group')
->leftJoin('WallBundle:Status','s2', 'WITH', 's2.id=s1.shared_from_id')
->innerJoin('s1.user', 'u')
->orderBy('s1.time', 'DESC')
->setMaxResults(15);
var_dump($query=$qb->getQuery()->getResult());die();
这个错误是错误的
[Syntax Error] line 0, col 7: Error: Expected known function, got 'IFNULL'
使用合并而不是像这样使用IFNULL
$fields = array('COALESCE(s2.id,s1.id) AS effectiveID','COALESCE(s2.status, s1.status) AS effectiveStatus', 'COALESCE(s2.user_id, s1.user_id) as effectiveUser','COALESCE(s2.likes_count, s1.likes_count) as effectiveLikesCount');
COALESCE返回列表中的第一个非空值,因此如果A为空且B为非空,则
COALESCE(A,B)
将返回B。有一个原则扩展,其中添加了这一点
这是IFNULL中的DQL文件。
本章介绍如何使用它们。
是的,就像错误消息所说的那样-条令查询语言不知道这样的函数。找到了一个类似问题的答案@gatisl是的,先生,我看到了,但我不知道。。。我怎样才能“安装”它?你救了我一天!我使用您的解决方案将
案例替换为订单中的。