问题描述
我有一个名为 "video"
的表,其中没有 "likes"
,因为我创建了另一个表 "video-like"
来将每个 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 是喜欢表中视频的 id