当然,我可以Yii::$app->db->createCommand($sql)->query()
,
但如果我想用一个ActiveRecord::find()->where($conditions)
做这个工作?
这是使用的选项之一yii\db\Expression
:
use yii\db\Expression;
...
$models = Customer::find()
->select(['id', 'name', ...])
->where(new Expression('id % 2 = 1')])
->all();
它绝对比原始 sql 更好['%2=', 'id', 1]
因为它遵循顺序并且在我看来更具可读性。
['%2=', 'id', 1]
也不适合这里因为%2=
实际上并不是像这样的运算符not in
or like
例如,所以运算符、值和=
标志有点混合在一起。
官方文档:
- yii\db\表达式 http://www.yiiframework.com/doc-2.0/yii-db-expression.html
Update:我问samdark,Gitter 官方聊天中的主要框架贡献者之一,他说正确的方法是使用yii\db\Expression
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)