2016-02-19 79 views
2

我想用多個語句做一個extbase查詢。我現在的查詢看起來是這樣的:如果(isset)條件在Extbase查詢

public function findOneCar($carid, $carcolor) { 
    $query = $this->createQuery(); 
    return $query 
     ->matching(
      $query->logicalAnd(
       $query->equals('carid', $carid), 
       $query->equals('farbe', $carcolor) 
       ) 
     ) 
     ->execute(); 
} 

現在我希望查詢的部分僅在設置參數時纔會生成。例如,如果一個人在網絡中爲顏色設置參數,查詢不應該在數據庫中查找它,而只會查找設置的參數。

事情是這樣的isn`t工作:

$query->logicalAnd(
        {$query->equals('carid', $carid), 
        if($color)$query->equals('farbe', $carcolor)} 
        ) 

回答

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