小编sik*_*kor的帖子

CakePHP 3 QueryBuilder:少数值的条件不会生成'IN'语句

在CakePHP 2中,当你写这样的东西时:

$Model->find('all', ['conditions' => ['field' => 1]]);
Run Code Online (Sandbox Code Playgroud)

您将获得如下所示的查询:

SELECT * FROM model WHERE model.field = 1;
Run Code Online (Sandbox Code Playgroud)

或者当你写这样的东西时:

$Model->find('all', ['conditions' => ['field' => [1,2,3,5]]]);
Run Code Online (Sandbox Code Playgroud)

你会得到这样的查询:

SELECT * FROM model WHERE model.field IN (1,2,3,5);
Run Code Online (Sandbox Code Playgroud)

我的意思是,'IN'语句是根据参数的类型自动生成的.

另一方面,当你写的时,CakePHP 3

$Table->find()->where(['field' => [1,2,3]])->all();
Run Code Online (Sandbox Code Playgroud)

你会收到一个错误,例如

无法将值转换为整数

因为它生成如下语句:

SELECT * FROM table WHERE table.field = Array();
Run Code Online (Sandbox Code Playgroud)

这是一个错误还是一个功能?

php cakephp cakephp-3.0

6
推荐指数
1
解决办法
5273
查看次数

标签 统计

cakephp ×1

cakephp-3.0 ×1

php ×1