如何在 Yii2 中使用多列创建 & 分组 OR LIKE 查询?
How to create & group OR LIKE query with multiple columns in Yii2?
如何使用查询生成器在 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();
如何使用查询生成器在 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();