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);
});
有什么想法吗?
答案 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