php - 根据 Eloquent 另一个​​表中的列选择十大类别

标签 php mysql sql laravel eloquent

我有三个表:uploadscategories 和一个名为 category_upload多对多 表。

表格看起来像这样:

**categories**

id
name

**uploads**

id
name
downloads(integer)

**category_upload**

id
category_id
upload_id

每次我下载“上传”时,下载列中的值都会增加 1。

我想做的,但不知道如何开始是根据 uploads 表中的 downloads 列选择前 10 个类别。因此,如果 downloads 列的总数是给定类别的所有上传中最大的,则该类别应该排名第一,依此类推直到第十。

这可以通过 Eloquent 或仅使用 SQL 来实现吗?如何实现?任何提示表示赞赏!

以下是我在模型中建立关系的方式:

类别:

public function uploads(){
        return $this->belongsToMany('App\Upload');
    } 

上传:

public function category(){
    return $this->belongsToMany('App\Category');
}

最佳答案

Select category_id, uploads
From (
    Select category_id, SUM(downloads) as uploads
    From uploads as u
    Left join upload_category as uc on uc.id=u.upload_id
    Left join category as c on c.id=uc.category_id
    Group by  category_id    )as t
  Order by uploads desc
  Limit 10

关于php - 根据 Eloquent 另一个​​表中的列选择十大类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47870946/

相关文章:

php - Sublime Text/代码无缘无故解析错误,隐藏字符

php - 如何从 Joomla 3.2 搜索外部 MySQL 数据摘录

sql - 如何将 SQL 数据从一个 View 转换为 Postgres 中的另一个 View

sql - 计算下一个日/月组合发生的日期

MySQL 表别名 - 有安全优势吗?

php - 按 WP_Query 中的自定义字段(数字)排序

javascript - 更改图像预览并获取 img 标签的值

php - 在 PHP 中创建内联 'Jargon' 帮助程序

php - 如何实现_isset魔术方法?

php - 在单个 php 脚本上运行多个 php 脚本