Cakephp 3查询条件数组构建在foreach循环中
Cakephp 3 query with conditions array build in foreach loop
您好,我想使用数组作为条件。
例如,我有一个 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'
]
]
然后我尝试从我的请求中获取数据table
$this->loadModel('Requests');
$openrequests = $this->Requests->find('all', array(
'conditions' => array(
'OR' => array(
$searcharray
)
)
));
它可能对数组中的键不起作用,因为我在 $searcharray 之后设置,例如 [1] 然后它起作用了。我不想把条件写成字符串,但是我该如何解决呢?
您的条件嵌套太深了一层。
你的 $searcharray
已经正确嵌套,如果你像你的例子一样再次嵌套它,那么你基本上是在创建一个只有一个 child 的 OR
节点(在turn 有 children 本身),这基本上被解释为 "nothing",因为您至少需要两个 children 才能使用运算符。嵌套更深一层的数组中的 children 将被解释为 AND
,因为这是未指定运算符时的默认值。
长话短说,只需按原样传递 $searcharray
:
'conditions' => [
'OR' => $searcharray,
]
另见
您好,我想使用数组作为条件。 例如,我有一个 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'
]
]
然后我尝试从我的请求中获取数据table
$this->loadModel('Requests');
$openrequests = $this->Requests->find('all', array(
'conditions' => array(
'OR' => array(
$searcharray
)
)
));
它可能对数组中的键不起作用,因为我在 $searcharray 之后设置,例如 [1] 然后它起作用了。我不想把条件写成字符串,但是我该如何解决呢?
您的条件嵌套太深了一层。
你的 $searcharray
已经正确嵌套,如果你像你的例子一样再次嵌套它,那么你基本上是在创建一个只有一个 child 的 OR
节点(在turn 有 children 本身),这基本上被解释为 "nothing",因为您至少需要两个 children 才能使用运算符。嵌套更深一层的数组中的 children 将被解释为 AND
,因为这是未指定运算符时的默认值。
长话短说,只需按原样传递 $searcharray
:
'conditions' => [
'OR' => $searcharray,
]
另见