duanjiaonie6097 2016-05-08 09:11
浏览 57
已采纳

将原始SQL查询更改为Laravel Query Builder对象

I have this query:

public function rank()
{
    $sql = "
    select id, points, team_name,
    (select count(*)
    from teams t2
    where t2.points > t.points or
          (t2.points = t.points and t2.id <= t.id)
    ) as rank
    from teams t
    where id = ?;
    ";
    $ranks = DB::select($sql, [$this->id]);
    foreach ($ranks as $rank) {
        return $rank->rank;
    }
}

I would like to change it into a Laravel query builder as opposed to a raw query, how would I do this?

  • 写回答

1条回答 默认 最新

  • dongluzhi5208 2016-05-08 12:25
    关注

    This should work.

    $select_raw = <<<SQL
        id, points, team_name,(
        select count(*)
        from teams t2
        where t2.points > t.points or
            (t2.points = t.points and t2.id <= t.id)
        ) as rank
    SQL;
    
    $ranks = Team::where('id', $this->id)->selectRaw($select_raw)->get();
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥50 mac mini外接显示器 画质字体模糊
  • ¥15 TLS1.2协议通信解密
  • ¥40 图书信息管理系统程序编写
  • ¥20 Qcustomplot缩小曲线形状问题
  • ¥15 企业资源规划ERP沙盘模拟
  • ¥15 树莓派控制机械臂传输命令报错,显示摄像头不存在
  • ¥15 前端echarts坐标轴问题
  • ¥15 ad5933的I2C
  • ¥15 请问RTX4060的笔记本电脑可以训练yolov5模型吗?
  • ¥15 数学建模求思路及代码