duandu1049 2018-06-29 11:06
浏览 112
已采纳

Laravel group by如果没有行,则返回零

I am listing last 16 days num of views. I want to write 0; if there is not row at date:

$digital_case_daily_views = DB::table('digital_case_views')
->select(DB::raw('count(*) as numOfDigitalCaseViews'))->groupBy('created_at')
->orderBy('created_at', 'desc')->limit(16)->get();

laravel 5.6

it returns like:

    "digital_case_daily_views": [
        {
            "numOfDigitalCaseViews": 162
        },
        {
            "numOfDigitalCaseViews": 458
        },
        {
            "numOfDigitalCaseViews": 287
        },
        {
            "numOfDigitalCaseViews": 1
        },
        {
            "numOfDigitalCaseViews": 1
        },
        {
            "numOfDigitalCaseViews": 1
        }
  • 写回答

1条回答 默认 最新

  • doubairan4213 2018-06-29 11:19
    关注

    you can't get more rows from the database than available, if you want to have 0 for the remaining days, you have to add them to the array, I've written a function for you that might help you with this:

    class Foo {
        static public function addRemainingDays(array $arr, int $amount) {
            if(count($arr) === $amount) {
                return $arr;
            }
    
            for($i = 0; i > $amount - count($arr); i++) {
                array_push($arr, (object)["numOfDigitalCaseViews" => 0]);
            }
    
            return $arr
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计