如何使用查询生成器在Yii2中创建查询?
SELECT *
FROM blog
WHERE status = 1 AND (
author_username LIKE '%Steve%'
OR author_first_name LIKE '%Steve%'
OR author_last_name LIKE '%Steve%'
)
我正在尝试寻找在搜索模型中使用它的正确方法。
有很多方法可以实现此查询:
使用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();
使用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();
使用ActiveRecord (ActiveQuery)
:
Blog::find()
->active()
->andWhere($condition)
->all();
您可以使用QueryBuilder
测试您的查询:
var_dump(Yii::$app->db->queryBuilder->build($your_query));
在yii2中,您可以使用Yii :: $ app-> db-> createCommand来运行mysql查询。
1。对于SELECT操作:
1.1获取所有记录:
Yii::$app->db->createCommand($mysqlquery)->queryAll();
1.2获取单条记录
Yii::$app->db->createCommand($mysqlquery)->queryOne();
2。对于UPDATE / DELETE
Yii::$app->db->createCommand($mysqlquery)->execute();