gpt4 book ai didi

php - 从 yii 2 中的其他表按计数(*)排序

转载 作者:可可西里 更新时间:2023-11-01 08:15:18 25 4
gpt4 key购买 nike

我有 2 个表:视频和喜欢
video 表有字段:id, title ..
喜欢表有字段:id、video_id、user_id

我想获得最喜欢的 10 个视频。我可以通过命令在 sql 中完成:

SELECT videos.*, COUNT( likes.video_id ) AS countlike  
FROM videos LEFT JOIN likes ON videos.id = likes.video_id
GROUP BY videos.id
ORDER BY countlike DESC
Limit 10

我如何使用 yii 2 在 ActiveRecord 中实现它

如有任何帮助,我将不胜感激。
提前致谢!

最佳答案

首先,您应该为 videolikes 表创建 ActiveRecord 类,以简化操作。

目标是创建以下两个类 class Video extends\yii\db\ActiveRecordclass Likes extends\yii\db\ActiveRecord

要轻松做到这一点,您应该查看 gii 实用程序,它将为您完成(可在 yourdomain/gii/model 获得)。为您的两个表填写表格,您就完成了。

然后你应该可以写下你的请求了:

$query = Video::find()
->select(['video.*', 'COUNT(likes.video_id) AS countlike'])
->join('LEFT JOIN', Likes::tableName(), 'videos.id=likes.video_id')
->groupBy('videos.id')
->orderBy(['countlike' => SORT_DESC])
->limit(10);
$data = $query->all();

在我看来,使用 ActiveRecord 处理复杂请求并没有什么神奇之处。但它可能会避免错误。

我强烈建议阅读 ActiveQuery 文档以获取有关上述方法参数的更多信息。 http://www.yiiframework.com/doc-2.0/yii-db-activequery.html

希望对您有所帮助。

关于php - 从 yii 2 中的其他表按计数(*)排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30753237/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com