inc*_*ick 5 php mysql sql laravel eloquent
我有三个表:uploads,categories和一个many-to-many称为表category_upload.
表格如下所示:
**categories**
id
name
**uploads**
id
name
downloads(integer)
**category_upload**
id
category_id
upload_id
Run Code Online (Sandbox Code Playgroud)
每次下载"上传"时,下载列中的值都会增加1.
我想做什么,但无法弄清楚如何开始是根据表中的downloads列选择前10个类别uploads.因此,如果downloads列的总数对于来自给定类别的所有上载而言是最大的,则此类别应为第一,依此类推至第十.
这可以通过雄辩或只是SQL来实现吗?任何提示表示赞赏!
以下是我在模型中建立关系的方式:
分类:
public function uploads(){
return $this->belongsToMany('App\Upload');
}
Run Code Online (Sandbox Code Playgroud)
上传:
public function category(){
return $this->belongsToMany('App\Category');
}
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
57 次 |
| 最近记录: |