Php 从Yii2中的相关表中订购表
我有一个名为Php 从Yii2中的相关表中订购表,php,postgresql,yii2,yii2-advanced-app,Php,Postgresql,Yii2,Yii2 Advanced App,我有一个名为“video”的表,其中没有“likes”,因为我创建了另一个表“video like”,将每个like加入“user”。 但是我想按喜好对视频进行排序,我不知道怎么做 我正在使用Yii2框架和PostgreSQL 在本例中,我创建了一个从新视频到旧视频排序的查询。这很容易,因为我不必访问另一个表来完成它 $this->orderBy(['created_at' => SORT_DESC]); 任何帮助都是有用的 您可以有两个嵌套的select $query = Mod
“video”
的表,其中没有“likes”
,因为我创建了另一个表“video like”
,将每个like加入“user”
。
但是我想按喜好对视频进行排序,我不知道怎么做
我正在使用Yii2框架和PostgreSQL
在本例中,我创建了一个从新视频到旧视频排序的查询。这很容易,因为我不必访问另一个表来完成它
$this->orderBy(['created_at' => SORT_DESC]);
任何帮助都是有用的 您可以有两个嵌套的select
$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
请发布您试图实现的任何代码以获得结果。非常感谢您的回复,但我对如何实现它有点困惑,我从未见过dots以这种方式使用。。。我试图用video_id替换source_id,它是viedo_likes表中的video id,每个“模型”都有各自的模型。但是当我运行它时,它说video.id不存在。正在执行的SQL是:选择“video”。*从“video”左连接(选择COUNT(*)作为“amount”,从“video”组按“video”组按“video”组按“video”组按“video”组按“amount”组按“DESC”排序。id=T.video_-idIn yii2,每个模型都有一个带有
tableName()
name的方法,所以除了直接使用表名之外,您还可以使用它