你好,我想使用数组作为条件。例如,我有一个带有zip组合的服务
12345 =>清洁,54321 =>清洁
现在我在一个foreach循环中一起构建我的数组
$searcharray = [];
foreach($services as $key => $val){
searcharray[] = array('service' => $val['service'], 'zip' => $val['zip']);
}
我的搜索数组看起来像这样:
[
(int) 0 => [
'service' => 'cleaning',
'zip' => '12345'
],
(int) 1 => [
'service' => 'cleaning',
'zip' => '54321'
]
]
然后我尝试从请求表中获取数据
$this->loadModel('Requests');
$openrequests = $this->Requests->find('all', array(
'conditions' => array(
'OR' => array(
$searcharray
)
)
));
它可能不适用于数组中的键,因为我在$ searcharray之后设置了[1],然后它起作用了。我不想将条件写为字符串,但是我该如何解决呢?
您将条件嵌套的层次太深了。
您的$searcharray
已经正确嵌套,如果再次像示例中那样嵌套,则基本上是在创建OR
节点,其中只有一个子节点(该子节点本身又有子节点),这基本上被解释为“什么也没有”,因为您至少需要两个孩子才能使用运算符。然后,将嵌套在数组中更深一层的子级解释为AND
,因为这是未指定任何运算符时的默认值。]
长话短说,照原样通过$searcharray
:
'conditions' => [ 'OR' => $searcharray, ]
另请参见