Extbase-Query 中的 if(isset) 条件
if(isset) condition in Extbase-Query
我想使用多个语句进行 extbase 查询。我的查询目前看起来像这样:
public function findOneCar($carid, $carcolor) {
$query = $this->createQuery();
return $query
->matching(
$query->logicalAnd(
$query->equals('carid', $carid),
$query->equals('farbe', $carcolor)
)
)
->execute();
}
现在我希望仅在设置了它的参数时才进行部分查询。例如,如果一个人确实为颜色设置了参数,那么查询不应该在数据库中查找它,而是只查找设置的参数。
这样的东西不起作用:
$query->logicalAnd(
{$query->equals('carid', $carid),
if($color)$query->equals('farbe', $carcolor)}
)
我已经这样自己解决了:
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();
}
我想使用多个语句进行 extbase 查询。我的查询目前看起来像这样:
public function findOneCar($carid, $carcolor) {
$query = $this->createQuery();
return $query
->matching(
$query->logicalAnd(
$query->equals('carid', $carid),
$query->equals('farbe', $carcolor)
)
)
->execute();
}
现在我希望仅在设置了它的参数时才进行部分查询。例如,如果一个人确实为颜色设置了参数,那么查询不应该在数据库中查找它,而是只查找设置的参数。
这样的东西不起作用:
$query->logicalAnd(
{$query->equals('carid', $carid),
if($color)$query->equals('farbe', $carcolor)}
)
我已经这样自己解决了:
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();
}