在sql中,我可以选择其ID可除以4的记录:
SELECT id FROM table_name WHERE id%4 = 0;
我尝试在yii2活动记录中执行此操作,但失败,出现错误:
$model = Verses::find()->where(['%4','id',0])->orderBy('id')->all();
关于这件事有什么方法或文件提示吗?
bwleehnv1#
你也可以这样做:
$model = Verses::find()->where(['(id % 4)' => 0])->orderBy('id')->all();
错误表明 Unknown column 'id%4' 为了将其表示为数学表达式,我们将其括在括号中,并将其添加到查询中。
Unknown column 'id%4'
des4xlb02#
最安全的方法是使用 Expression :
Expression
$model = Verses::find()->where(new Expression('id%4 = 0'))->orderBy('id')->all();
在中添加括号时 ->where(['(id % 4)' => 0]) 可能工作,这是相当黑客它这种行为几乎被删除在最新版本的yii,所以我不会依赖它太多。
->where(['(id % 4)' => 0])
ehxuflar3#
我通过反复尝试找到了解决办法:
$model = Verses::find()->where(['%4=','id',0])->orderBy('id')->all();
换言之 = 符号应该连接到模运算,即 %4= .
=
%4=
3条答案
按热度按时间bwleehnv1#
你也可以这样做:
错误表明
Unknown column 'id%4'
为了将其表示为数学表达式,我们将其括在括号中,并将其添加到查询中。des4xlb02#
最安全的方法是使用
Expression
:在中添加括号时
->where(['(id % 4)' => 0])
可能工作,这是相当黑客它这种行为几乎被删除在最新版本的yii,所以我不会依赖它太多。ehxuflar3#
我通过反复尝试找到了解决办法:
换言之
=
符号应该连接到模运算,即%4=
.