php - 使用 Eloquent 复杂查询 - Laravel 4

标签 php mysql sql laravel laravel-4

所以我正在制作一个模拟曲棍球联赛的网站。

我正在努力提高排名,这就是事情变得复杂的地方。

有 2 个 session 。东西方。

在每个 session 中,有3个部门,为了举例起见,我们称它们为A、B和C。

每个赛区有 5 支队伍,第 1 队、第 2 队、第 3 队、第 4 队、第 5 队。

这就是它变得棘手的地方。

排名由 session 组成。例如,东方和西方有不同的排名。每个部门的顶级团队将自动进入大会前 3 名。

例如,A组1队5分,A组2组4分,B组4组4分(其余少),C组5组3分(其余组)较少的)。 排名应该是: 1- Team 1 - Division A - 5 分 2- Team 4 - Division B - 4 分 3- Team 5 - Division C - 3 分 4- Team 2 - Division 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 已被弃用,另外,我想使用 eloquent,因为这种相同类型的代码将在其他地方使用。

最佳答案

我不认为 CASE 已经在 QueryBuilder 上可用。所以你有两个选择:

这是 DB::query() 的替代品:

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

或者您可以使用 QueryBuilder 创建所有这些,您可以添加一些原始的 CASE 部分,如下所示:

$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/

相关文章:

php - 在jquery token字段中获取重复值,如何避免这些重复值

php - 在 HTML5 中提交输出计算值

php - 将字符串添加到除最后一个之外的所有循环项目

MySQL合并相关表中的数据并导出为.csv

mysql - 如何对japers报表进行灵活的搜索?

php - 使用 php 和 mysql 按月报告?

mysql - 一个 SQL 语句中的递归和非递归 ACL

java - 是否有实现与默认映射不同的 Java 类型与 SQL 类型映射的最佳实践

c# - WPF - 如何以编程方式备份​​/恢复 LocalDB - ClickOnce

php - 如何计算数据库中的(重复次数)数量