我使用symfony 3,并且我将一些数据存储到数据库中。 为此,用户无需登录。
现在,我已使用$this->getUser();
创建了一个选择查询。但用户可以为NULL。当我执行此查询时,它不会选择任何行。
return $this->createQueryBuilder('product')
->where('product.user = :user')
->andWhere('product.product = :product')
->andWhere('product.cartId = :uniqueCartId')
->setParameters([
'product' => $product,
'user' => $user,
'uniqueCartId' => $uniqueCartId
])
->getQuery()
->execute();
$user = $this->getUser();
我已经尝试过了:
if(!$user instanceof User) $user = NULL;
但这不起作用。
如果我删除用户检查,则可以。
有什么想法吗?
答案 0 :(得分:0)
如果有像
这样的用户对象,我猜你应该绑定where子句$parameters=array(
'product' => $product,
'uniqueCartId' => $uniqueCartId
);
$user = $this->getUser();
$query = $this->createQueryBuilder('product')
->where('product.product = :product')
->andWhere('product.cartId = :uniqueCartId');
if($user != null){ /* if($user instanceof User) */
$parameters['user'] = $user;
$query = $query->andWhere('product.user = :user');
}else{
/* $query = $query->andWhere('product.user IS NULL'); Not necessary */
}
$query->setParameters($parameters)
->getQuery()
->execute();