Symfony - Doctrine - 用户选择查询(但可以是匿名用户)

时间:2017-12-08 10:20:11

标签: php mysql symfony doctrine-orm

我使用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; 但这不起作用。

如果我删除用户检查,则可以。

有什么想法吗?

1 个答案:

答案 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();