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();
}