【问题标题】:Yii2 subquery GROUP BY in active recordYii2 子查询 GROUP BY 在活动记录中
【发布时间】:2016-11-23 10:59:30
【问题描述】:

我可以转换这个查询吗 "SELECT * FROM (SELECT * FROM blog_post ORDER BY data DESC) blog_post GROUP BY blog_id LIMIT 2"

进入 Yii2 活动记录查询?

谢谢 女士

【问题讨论】:

    标签: activerecord yii2 subquery


    【解决方案1】:

    我想你可以这样做:

    Ⅰ:在您选择的地方创建一个子查询。

    $blogPostQuery = BlogPostModel::find()->orderBy(['data' => SORT_DESC]);
    

    Ⅱ:获取activeRecord结果。 from参数是一个exist Query。

    $models = (new yii\db\Query)
    ->from(['blog_post ' => $blogPostQuery])
    ->groupBy(['blog_id'])
    ->limit(2)
    ->all();
    

    ps: 在 Yii Api 中查看 yii\db\query->from()-detail ;

    (public $this from ($tables)) $tables 可以是字符串(例如 'user')或数组(例如 ['user', 'profile']) 指定一个或多个表名··· 或 子查询 或 DB 表达式

    试一试!希望对你有用:))

    【讨论】:

    • 我尝试过,但是这样返回的 $models 不是一个活动记录,而是一个数组。
    【解决方案2】:

    博文::find() ->orderBy('数据 DESC') ->groupBy('blog_id') ->限制(2) ->所有();

    【讨论】:

      【解决方案3】:

      是的,您可以这样做。 Yii2 为我们提供了出色的库支持。

      您可以形成 custom sql 查询并在findBySql() 中传递此查询,例如:

      $sql = "Some query/nested query";
      $result = ModelClass::findBySql($sql);
      

      访问 Yii 官方documentation.

      【讨论】:

        猜你喜欢
        • 2012-02-17
        • 2016-01-27
        • 2010-12-11
        • 1970-01-01
        • 2013-06-25
        • 1970-01-01
        • 1970-01-01
        • 2015-11-10
        • 2011-08-28
        相关资源
        最近更新 更多