yii2活动记录,其中%模数

dsf9zpds  于 2021-07-24  发布在  Java
关注(0)|答案(3)|浏览(298)

在sql中,我可以选择其ID可除以4的记录:

SELECT id FROM table_name WHERE id%4 = 0;

我尝试在yii2活动记录中执行此操作,但失败,出现错误:

$model = Verses::find()->where(['%4','id',0])->orderBy('id')->all();

关于这件事有什么方法或文件提示吗?

bwleehnv

bwleehnv1#

你也可以这样做:

$model = Verses::find()->where(['(id % 4)' => 0])->orderBy('id')->all();

错误表明 Unknown column 'id%4' 为了将其表示为数学表达式,我们将其括在括号中,并将其添加到查询中。

des4xlb0

des4xlb02#

最安全的方法是使用 Expression :

$model = Verses::find()->where(new Expression('id%4 = 0'))->orderBy('id')->all();

在中添加括号时 ->where(['(id % 4)' => 0]) 可能工作,这是相当黑客它这种行为几乎被删除在最新版本的yii,所以我不会依赖它太多。

ehxuflar

ehxuflar3#

我通过反复尝试找到了解决办法:

$model = Verses::find()->where(['%4=','id',0])->orderBy('id')->all();

换言之 = 符号应该连接到模运算,即 %4= .

相关问题