如何将SQL翻译为Eloquent?

时间:2017-09-21 03:22:58

标签: php laravel-5 laravel-eloquent

如何将当前的sql语句转换为Eloquent,并将team_id内的结果按group_id分组?

SELECT 
    max(`group_id`) as group_id,
    `team_id` as team_id, 
    max(level_id) as level_id, 
    sum(`played`) as played,
    sum(`won`) as won,
    sum(`draw`) as draw,
    sum(`lost`) as lost,
    sum(`gf`) as gf,
    sum(`ga`) as ga,
    sum(`gd`) as gd,
    sum(`points`) as points 
FROM `group_team` 
WHERE level_id = 1 
GROUP BY team_id

2 个答案:

答案 0 :(得分:1)

像这样的东西

$query= DB::table('group_team')
    ->max('group_id')
    ->where('level_id',1)
    ->groupBy('team_id')
    ->get();

或者你可以运行raw sql来直接查询db,就像这样

$query = DB::select('SELECT max("group_id") as group_id' FROM group_team WHERE level_id = 1 GROUP BY team_id);

要获得更好的解释,请查看文档:{​​{3}}

答案 1 :(得分:1)

我最好的尝试是:

知道GroupTeam是你的模型

GroupTeam::where('level_id', 1)
    ->groupBy('team_id')
    ->addSelect(
        DB::raw('*, 
            max(`group_id`) as group_id,
            `team_id` as team_id, 
            max(level_id) as level_id, 
            sum(`played`) as played,
            sum(`won`) as won,
            sum(`draw`) as draw,
            sum(`lost`) as lost,
            sum(`gf`) as gf,
            sum(`ga`) as ga,
            sum(`gd`) as gd,
            sum(`points`) as points'
        )   
    )->get();

</code>