php - 从 Yii2 中的相关表中订购一个表
问题描述
我有一个名为的表"video"
,其中没有"likes"
,因为我创建了另一个表"video-like"
来加入每个喜欢的"user"
. 但我想按喜欢对视频进行排序,但我不知道该怎么做。
我正在使用 Yii2 框架和 PostgreSQL。
在此示例中,我创建了一个从新视频到旧视频排序的查询。这很容易,因为我不必访问另一个表来做到这一点。
$this->orderBy(['created_at' => SORT_DESC]);
任何帮助都是有用的!
解决方案
您可以有 2 个嵌套选择。
$query = Model()::find();
$subQuery = ModelLikes()::find()
->select("COUNT(*) AS amount")
->groupBy([
ModelLikes::tableName() . '.source_id'
])
->orderBy(['amount' => SORT_DESC]);
$query->leftJoin(['T' => $subQuery],
Model::tableName() . ".id= T.source_id");
$data = $query->all();
您应该根据您的模型更改模型的名称和字段。
source_id 是 likes 表中视频的 id
推荐阅读
- android - Android Studio:如何从搜索和其他功能中排除文档文件夹?
- javascript - 如何在文本字段中显示基本验证消息
- asp.net - 更改后如何放弃会话
- 在 ASP.Net 中?
- react-native - 从服务器获取所有数据后停止活动指示器
- electron - 以编程方式控制 Chromium 实例的最可靠方法是什么?
- android - 如何在android studio中读取pdf文件
- c# - 如何使用 onvif ver20 ptz.wsdl 创建和设置 ONVIF PresetTour
- r - 订购 PCA 导致主成分高于 5
- quickfix - Quickfix 浮动字段
- c# - async Func 的 3 次调用有什么区别
> 在 C# 中?