2015-05-21 32 views
7

我执行中的实体仓库此查询上未定义的结果变量添加具有条件和不断收到不能在非聚集查询

不能添加在不确定的结果具有条件变量

但该查询根本没有聚合。为什么这发生在我身上?

public function getPersonalizableItemsByOwner(User $owner) 
{ 
    $qb = $this 
     ->getEntityManager() 
     ->createQuery('SELECT pi FROM '.$this->getEntityName().' pi WHERE order_id = :owner_id AND (deletedAt IS NULL OR deletedAt > :referenceDate)') 
     ->setParameters(array('owner_id' => $owner->getId(), 'referenceDate' => date('Y-m-d H:i:s'))); 

     return $qb->getResult(); 
} 

PS:我有原则不甚了解,我的任务添加软通KnpLabs删除支持SoftDeleteable特质,但只有在某些特定的情况,因此,我不能使用全球可用的过滤器,并且必须实现它手动。

+2

我不知道这是否是引起了错误,但你应该用'pi'前缀列名作为你的别名表格,例如'pi.order_id' – Ankh

回答

1

在DQL中有一个错字,该字段应该是ownerId而不是order_id。更进一步,在各领域的命名空间需要提供它似乎如:

public function getPersonalizableItemsByOwner(User $owner) 
{ 
    $qb = $this 
     ->getEntityManager() 
     ->createQuery('SELECT pi FROM '.$this->getEntityName().' pi WHERE pi.ownerId = :owner_id AND (pi.deletedAt IS NULL OR pi.deletedAt > :referenceDate)') 
     ->setParameters(array('owner_id' => $owner->getId(), 'referenceDate' => date('Y-m-d H:i:s'))); 

    return $qb->getResult(); 
}