Extbase-Query中的if(isset)条件

时间:2016-02-19 17:09:50

标签: php extbase

我想用多个语句进行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)}
                    )

1 个答案:

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