如何使用查询生成器在 Yii2 中创建这样的查询?
SELECT *
FROM blog
WHERE status = 1 AND (
author_username LIKE '%Steve%'
OR author_first_name LIKE '%Steve%'
OR author_last_name LIKE '%Steve%'
)
Run Code Online (Sandbox Code Playgroud)
我正在尝试找到在搜索模型中使用它的正确方法。
小智 5
有很多方法可以实现这个查询:
使用PDO:
$q='Stev';
Yii::$app->db->createCommand('
SELECT *
FROM blog
WHERE status = 1 AND (
author_username LIKE :Q
OR author_first_name LIKE :Q
OR author_last_name LIKE :Q
)
',['Q'=>"%$q%"])
->queryAll();
Run Code Online (Sandbox Code Playgroud)使用yii\db\Query:
$condition = [
'OR', //Operand (C1 OR C2)
[ //Condition1 (C1) which is complex
'OR', //Operand (C1.1 OR C1.2)
['like','author_username',$q], //C1.1
['like','author_first_name',$q] //C1.2
],
['like','author_last_name',$q] //Condition2(C2)
];
(new yii\db\Query())
->from('blog')
->andWhere('status = 1')
->andWhere($condition)
->all();
Run Code Online (Sandbox Code Playgroud)使用ActiveRecord (ActiveQuery):
Blog::find()
->active()
->andWhere($condition)
->all();
Run Code Online (Sandbox Code Playgroud)您可以使用以下方法测试您的查询QueryBuilder:
var_dump(Yii::$app->db->queryBuilder->build($your_query));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1273 次 |
| 最近记录: |