2016-06-29 9 views

答えて

2

を持つクエリに4つのパラメータを提供している ジョー

1

はこのお試しください:

$query = $this->createQueryBuilder('a') 
    ->select('a.amount') 
    ->where('a.product = :productId') 
    ->andWhere('a.id = :id'), 

$recentDate = null; 

if($date === null){ 
    $recentDate = $this->createQueryBuilder('a') 
     ->select($query->expr()->max('a.date'))->getQuery()->getResult(); 
    $query->andWhere('a.date = :recentDate'); 
}else{ 
    $query->andWhere('a.date = :date'); 
} 

$query->setParameters(array(
     'productId' => $productId, 
     'id' => $id, 
     'date' => $date, 
     'recentDate' => $recentDate, 
    )); 

return $query; 

が、私はこの問題を持っている!

$query->setParameters(array(
    'productId' => $productId, 
    'id' => $id 
)); 
if($date === null) { 
    $query->setParameter(':recentDate', $recentDate); 
} else { 
    $query->setParameter(':date', $date); 
} 

recentDateパラメータはクエリの一部ではない場合は$日付= NULLと逆もそうですが、dateパラメータではありません。

このクエリを作成するより洗練された方法がありますか?

種類は、あなたが唯一のちょうど同じ名前で、あなたの「日付」パラメータと「recentDate」パラメータに名前を付ける3.

$query = $this->createQueryBuilder('a') 
    ->select('a.amount') 
    ->where('a.product = :productId') 
    ->andWhere('a.id = :id'), 

$recentDate = null; 

if($date === null){ 
    $recentDate = $this->createQueryBuilder('a') 
     ->select($query->expr()->max('a.date'))->getQuery()->getResult(); 
    $query->andWhere('a.date = :recentDate'); 
}else{ 
    $query->andWhere('a.date = :date'); 
} 

$query->setParameters(array(
     'productId' => $productId, 
     'id' => $id, 
)); 

if($date === null){ 
    $query->setParameter('recentDate', $recentDate); 
}else{ 
    $query->setParameter('date', $date); 
} 
1

についてあなたのリクエストに一緒に同意できず、このユニークなパラメータのみをあなたに渡します。setParameters()

関連する問題