Yii2子查询GROUP BY在活动记录中

时间:2016-07-20 09:23:29

标签: activerecord yii2 subquery

我可以转换此查询吗? “SELECT * FROM(SELECT * FROM blog_post ORDER BY data DESC)blog_post GROUP BY blog_id LIMIT 2”

进入Yii2活动记录查询?

THX MS

3 个答案:

答案 0 :(得分:4)

是的,你可以这样做。 Yii2给了我们一个很棒的图书馆支持。

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

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

访问Yii官方documentation

答案 1 :(得分:0)

  

志文章::找到()        - > orderBy('数据DESC')        - > GROUPBY(' blog_id')        - >极限(2)        - >所有();

答案 2 :(得分:0)

我想你可以这样做:

Ⅰ:创建一个可供选择的子查询。

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

Ⅱ:获取activeRecord结果。 来自 参数是一个存在的查询。

$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表达式

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