我想用多个语句进行extbase查询。我的查询目前看起来像这样:
public function findOneCar($carid, $carcolor) {
$query = $this->createQuery();
return $query
->matching(
$query->logicalAnd(
$query->equals('carid', $carid),
$query->equals('farbe', $carcolor)
)
)
->execute();
}
现在我只想在设置参数的情况下进行部分查询。例如,如果某人为net设置了颜色参数,则查询不应在数据库中查找,而只查找已设置的参数。
这样的事情不起作用:
$query->logicalAnd(
{$query->equals('carid', $carid),
if($color)$query->equals('farbe', $carcolor)}
)
答案 0 :(得分:1)
我自己已经解决了这个问题:
public function findOneCar($carid, $carcolor) {
$query = $this->createQuery();
$constraints = array();
if ($carid !== "0") {
$constraints[] = $query->equals('carid', $carid);
}
if ($carcolor !== NULL) {
$constraints[] = $query->equals('farbe', $carcolor);
}
$query->matching($query->logicalAnd($constraints));
return $query->execute();
}