【问题标题】:How do I get a "select count(*) group by" using laravel eloquent如何使用 laravel eloquent 获得“select count(*) group by”
【发布时间】:2016-04-22 00:59:45
【问题描述】:

我想用 laravel eloquent 执行下面的语句

SELECT *, count(*) FROM reserves  group by day

我想到的唯一解决方案是在数据库中创建一个视图,但我很确定有一种方法可以用 laravel 的方式来实现。

【问题讨论】:

    标签: laravel laravel-5 eloquent query-builder


    【解决方案1】:

    你可以用这个:

    $reserves = DB::table('reserves')->selectRaw('*, count(*)')->groupBy('day');
    

    【讨论】:

    • 为什么他可以使用这个,为什么这对他有用?
    【解决方案2】:

    正如你希望用 Laravel Eloquent 做的那样,我假设你有一个模型名称 Reserve。在这种情况下你可以使用这个

    $reserve = Reserve::all()->groupBy('day')->count();
    

    【讨论】:

    • 如果有 1000 万条记录怎么办?
    • 只是为了确保每个人都知道:这是一个可用的解决方案但是选择后在php中进行分组,并且在sql语句中分组要快得多。
    • @Okneloper 可能分页
    【解决方案3】:

    你可以使用:

    #Laravel Raw Expressions
    
      $reserves = DB::table('reserves')
                           ->select(DB::raw('count(*) as reserves_count'))           
                           ->groupBy('day')
                           ->get();
    
    OR
    
      $reserves = Reserve::select(['reserves.*'])
                           ->groupBy('day')
                           ->count();
    

    进一步阅读here

    【讨论】:

    • 您能否进一步解释一下您的答案?对OP更有帮助
    猜你喜欢
    • 1970-01-01
    • 2017-09-30
    • 1970-01-01
    • 2011-02-13
    • 1970-01-01
    • 2020-08-15
    • 1970-01-01
    • 1970-01-01
    • 2016-08-14
    相关资源
    最近更新 更多