" IN"和" NOT IN"在CakePHP3中

时间:2017-06-28 11:20:04

标签: php sql scope closures cakephp-3.0

Cookbook中有一个例子:

$query = $cities->find()
   ->where(function ($exp, $q) {
      return $exp->notIn('country_id', ['AFG', 'USA', 'EST']);
});

在SQL中,这应该与以下内容相同: 在哪里country_id NOT IN(' AFG',' USA',' EST')

现在,我试图在这里使用变量。可悲的是,这不会起作用:

$query = $cities->find()
   ->where(function ($exp, $q, $variable) {
      return $exp->notIn('country_id', $variable);
});

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

它适用于“使用”,请参阅:PHP: Anonymous Functions

$query = $cities->find()
   ->where(function ($exp, $q) use ($variable) {
      return $exp->notIn('country_id', $variable);
});

答案 1 :(得分:0)

我总是发现在CakePHP中使用IN和NOT IN最简单的方法如下:

$query = $cities->find()
   ->where(['country_id IN' => $variable])

有关自动生成条款的更多信息,请参阅本书中的以下链接。您还可以使用它自动将值转换为列的类型。对我而言,它也更具可读性。

https://book.cakephp.org/3.0/en/orm/query-builder.html#automatically-creating-in-clauses