我需要make查询,但这不是简单的查询。
我需要在查询中setParameters
,具体取决于变量值。简单的代码:
$repository = $this->getDoctrine()->getRepository(Item::class);
$query = $repository->createQueryBuilder('b');
if ($itemId != null) {
$query->where('b.id = :id')
->setParameter('id', $itemId);
}
if ($name != "XXX") {
$query->where('b.name = :name')
->setParameter('name', $name);
}
$item = $query->getQuery()->getResult();
return $this->render('default/search/result.html.twig',
array('item' => $item));
但是这段代码不正确。有人知道怎么解决吗?
答案 0 :(得分:0)
您应该使用$query->andWhere()
所以在你的情况下:
$repository = $this->getDoctrine()->getRepository(Item::class);
$query = $repository->createQueryBuilder('b');
if ($itemId != null) {
$query->where('b.id = :id')
->setParameter('id', $itemId);
}
if ($name != "XXX") {
$query->andWhere('b.name = :name')
->setParameter('name', $name);
}
$item = $query->getQuery()->getResult();
return $this->render('default/search/result.html.twig',
array('item' => $item));
//注意: - > andWhere()可以直接使用,没有任何 - > where() 前
有关详情,请参阅此处:http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/query-builder.html