【发布时间】:2016-06-30 13:01:19
【问题描述】:
在我的 Yii2 项目中,我有 post 和 post_views 表,以及一个 Post 模型。
post_views中有2个字段:
post_idviews_counter
我使用PostSearch 和PostsQuery (ActiveQuery) 进行查询。
我的任务是:我需要使用自定义字段views 获取我的所有帖子,其中我从post_views 获得views_counter。
我没有在模型中使用hasMany,因为项目中没有post_views 表的模型,如果可能,我不想创建它。另外,我需要按views 字段对我的帖子进行排序。我被困在这个问题上:
public function topPosts(){
$junction_table = '{{%post_views}}';
return $this->innerJoin($junction_table, Post::tableName().'.id='.$junction_table.'.post_id');
}
主要问题是我不知道如何正确加入和返回数据。 我需要这个查询:
SELECT p.*, pv.views_count FROM posts p INNER JOIN post_views pv ON p.id = pv.post_id ORDER BY pv.views_count DESC;
【问题讨论】:
-
只是出于好奇...我能问一下为什么
views_counter列不是post表的一部分吗?我看不出有任何不存在的理由。 -
我觉得以后可能会有更多的专栏所以我决定把它们分开