gpt4 book ai didi

mysql - 如何在 Yii2 中创建和分组 OR LIKE 多列查询?

转载 作者:行者123 更新时间:2023-12-03 08:47:06 25 4
gpt4 key购买 nike

如何使用查询生成器在 Yii2 中创建这样的查询?

SELECT * 
FROM blog
WHERE status = 1 AND (
author_username LIKE '%Steve%'
OR author_first_name LIKE '%Steve%'
OR author_last_name LIKE '%Steve%'
)

我正在尝试找到在搜索模型中使用它的正确方法。

最佳答案

有很多方法可以实现这个查询:

  1. 使用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();
  2. 使用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();
  3. 使用ActiveRecord (ActiveQuery):

    Blog::find()
    ->active()
    ->andWhere($condition)
    ->all();

您可以使用QueryBuilder测试您的查询:

var_dump(Yii::$app->db->queryBuilder->build($your_query));

关于mysql - 如何在 Yii2 中创建和分组 OR LIKE 多列查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60974616/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com