2017-12-08 17 views
1

symfony 3을 사용하고 있으며 일부 데이터를 데이터베이스에 저장하고 있습니다. 이 경우 사용자는 로그인 할 필요가 없습니다.Symfony - Doctrine - 사용자와 쿼리 선택 (익명 사용자 일 수도 있음)

이제 $this->getUser();으로 선택 쿼리를 만들었습니다. 그러나 사용자는 NULL이 될 수 있습니다. 이 쿼리를 실행할 때 모든 행을 선택하지 않습니다. if(!$user instanceof User) $user = NULL; 그러나 그것은 작동하지 않습니다

$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

는 I, 즉 완벽하게 작동

$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