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,
]

另见