如何在 CakePHP 中获得“OR”条件


How can I get an "OR" condition within CakePHP?

>我正在尝试创建一个与某些条件匹配或与确切 ID 匹配的查询

这是我想要的查询:

SELECT * WHERE (`Listing.Color` = 'red' AND `Listing.Doors` = 2) OR Listing.ID = 75

这是我在调试时得到的查询:

SELECT * WHERE `Listing.Color` = 'red' AND `Listing.Doors` = 2 AND Listing.ID = 75

这是我的代码:

$conditions = array();
$conditions[] = array('Listing.Color' => 'red');
$conditions[] = array('Listing.Doors' => 4);
$conditions[] =  array( 
        "OR" => array(
            array('Listing.ID' => 75)
             ),
         );
return $conditions;
$this->paginate = array(
    'conditions' => $conditions,
);    

$this->set('listings', $this->paginate());

我也尝试过这些组合(以及其他一些组合)

$conditions["OR"][] = array('Listing.ID' => 75);
$conditions[]["OR"] = array('Listing.ID' => 75);
$conditions[]["OR"][] = array('Listing.ID' => 75);
$conditions["OR"][] = array('Listing.ID' => 75);
$conditions = array(
    'OR' => array(
         array('Listing.Color' => 'red', 'Listing.Doors' => 4),
         array('Listing.ID' => 75)
     )        
);
$this->paginate = array(
    'conditions' => $conditions,
);

另外,为什么在创建$conditions数组后立即出现return $conditions;

您需要将所有要执行的项置于 OR 条件中。 此外,"Listing.ID"=> 75 周围的内部数组只有在您在 OR 上执行相同的字段(如 Listing.ID = 75 或 Listing.ID = 25)时才需要。 尝试以下操作(显然尚未测试过)

$conditions[] =  array( 
    "OR" => array(
            'Listing.ID' => 75,
            'Listing.Doors' => 4,
         ),
     );
$conditions["AND"] = array( 'Listing.Color' => 'red',  Listing.Doors' => 2 );
$conditions["OR"] = array( 'Listing.ID' => 75 );