You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将指定MySQL查询转换为Laravel查询构造器语句?

将MySQL查询转换为Laravel查询构造器写法

没问题,我帮你把这条原生MySQL查询转换成Laravel查询构造器的写法,两种风格供你选择,都能实现完全一致的功能:

写法一:拆分字段使用DB::raw()

这种写法在需要单独调整某一个字段的时候更灵活:

use Illuminate\Support\Facades\DB;

$apartmentViews = DB::table('views')
    ->select(
        'apartment_id',
        DB::raw('COUNT(created_at) AS n_view'),
        DB::raw("DATE_FORMAT(created_at, '%Y-%m-%d') AS day_view")
    )
    ->where('apartment_id', 36)
    ->groupBy('day_view')
    ->orderByDesc('n_view')
    ->get();

写法二:使用selectRaw()简化代码

如果不需要单独调整字段,用selectRaw()直接写完整的选择语句会更简洁:

use Illuminate\Support\Facades\DB;

$apartmentViews = DB::table('views')
    ->selectRaw("apartment_id, COUNT(created_at) AS n_view, DATE_FORMAT(created_at, '%Y-%m-%d') AS day_view")
    ->where('apartment_id', 36)
    ->groupBy('day_view')
    ->orderByDesc('n_view')
    ->get();

补充说明

  • 两种写法的执行结果完全一致,都对应你提供的原生SQL逻辑
  • orderByDesc('n_view')等价于原生SQL里的ORDER BY COUNT(created_at) DESC,利用别名让代码更易读
  • 如果你的项目里有对应的Eloquent模型(比如View模型),可以把DB::table('views')替换成View::query(),更贴合Laravel的Eloquent风格

内容的提问来源于stack exchange,提问作者folipso

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 17:37:40