当然,我可以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();
Run Code Online (Sandbox Code Playgroud)
它比原始的sql和 ['%2=', 'id', 1]因为它遵循顺序,在我看来更具可读性.
['%2=', 'id', 1]也不适合在这里,因为%2=是不实际的操作者等not in或like例如,操作者所以,价值和=符号是种混合在一起.
官方文档:
更新:我问过samdark,官方Gitter聊天的主要框架贡献者之一,他说正确的方法是使用yii\db\Expression.
您也可以使用Active Query实现此目的.这可能有所帮助.
$customers = Customer::find()
->select(['id', 'name', ...])
->where('id % 2 = 1')
->all();
Run Code Online (Sandbox Code Playgroud)
要么
$customers = Customer::find()
->select(['id', 'name', ...])
->where(['% 2 =', 'id', 1])
->all();
Run Code Online (Sandbox Code Playgroud)
参考.
| 归档时间: |
|
| 查看次数: |
1331 次 |
| 最近记录: |