2017-12-08 5 views
1

私はsymfony 3を使用しています。 これには、ユーザはログインする必要はありません。で選択クエリを作成しました。しかし、UserはNULLにすることができます。このクエリを実行すると、どの行も選択されません。 ​​ しかし、それは動作しません:symfony - Doctrine - ユーザとのクエリを選択します(匿名ユーザでもかまいません)

$user = $this->getUser();

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();は、私はすでにこれを試してみました。

ユーザーチェックを削除すると機能します。

アイデア?

答えて

0

私は完璧に動作

$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(); 
+1

おかげで、のようなユーザオブジェクトがある場合は、where句をバインドする必要がありますね – Refilon

関連する問題