所以我正在为一个模拟曲棍球联盟制作一个网站。
我正试图进入积分榜,而这正是问题的症结所在。
有两个会议。东和西。
在每一次会议中,有3个部门,为了这个例子,我们称它们为A、B和C。
每个师有5个队,1队,2队,3队,4队,5队。
所以这就是问题的症结所在。
名单由会议组成。例如,有一个独立的东西方排名。每个部门的顶级团队都会自动进入会议的前三名。
例如,A区1队得5分,A区2队得4分,B区4队得4分(其余得少),C区5队得3分(其余得少)。
排名应为:
1-1队-A组-5分
2-4队-B组-4分
3-5队-C组-3分
4-2队-A组-4分
...
我的代码是:

$teams_east = DB::query("SELECT a.*, (CASE WHEN b.scoreMax IS NULL THEN 1 ELSE 2 END) AS SortFiddle
                                FROM (SELECT teams.*, teamdetails.division, ((`nhl_wins` *2) + `nhl_ot` + `nhl_ties`) AS scoreMax
                                FROM teams
                                LEFT JOIN teamdetails ON teams.team_name = teamdetails.pro_name
                                WHERE teamdetails.conference ='Est'  ) a
                                LEFT OUTER JOIN
                                (SELECT division, MAX((`nhl_wins` *2) + `nhl_ot` + `nhl_ties`) AS scoreMax
                                FROM teams
                                LEFT JOIN teamdetails ON teams.team_name = teamdetails.pro_name
                                WHERE teamdetails.conference ='Est'  GROUP BY division ORDER BY `nhl_wins`,scoreMax LIMIT 3) b
                                ON a.division = b.division
                                AND a.scoreMax = b.scoreMax
                                ORDER BY SortFiddle DESC, a.scoreMax DESC, `nhl_wins` DESC, nhl_gf DESC, nhl_ga ASC");

但是DB::query已经被弃用了,另外,我想使用雄辩的方法,因为这类代码将在其他地方使用。

最佳答案

我不相信QueryBuilder上已经有案例了。所以你有两个选择:
这是对DB::query()的替换:

DB::select(DB::raw('select * from users'));

或者您可以使用QueryBuilder创建所有这些内容,并可以添加一些原始内容,如:
$users = DB::table('users')
    ->select(DB::raw('count(*) as user_count, status'))
    ->where('status', '<>', 1)
    ->groupBy('status')
    ->get();

关于php - Eloquent 复杂查询-Laravel 4,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16908984/

10-13 03:18