>我正在尝试创建一个与某些条件匹配或与确切 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 );