我有三个表:uploads
、categories
和一个名为 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/