【问题标题】:How do I get current week's count data from table in Laravel如何从 Laravel 的表中获取当前周的计数数据
【发布时间】:2017-08-10 01:39:12
【问题描述】:

我正在尝试从我的表中获取本周的数据

我有以下代码,它给了我 31 天的数据(一个月,但它是分开的,这是我需要的)

$stats["tmv"] = "";
$stats["tmd"] = "";
$stats["tru"] =  array();

        for ($i=1; $i <= 31; $i++) {
            $stats["tmv"] .= DB::table('stats')->select(DB::raw('*'))->where(DB::raw('DAY(created_at)'), '=', $i)->where('stats_type', "mv")->count();
            $stats["tmd"] .= DB::table('stats')->select(DB::raw('*'))->where(DB::raw('DAY(created_at)'), '=', $i)->where('stats_type', "md")->count();
            $stats["tru"][$i] = DB::table('users')->select(DB::raw('*'))->where(DB::raw('DAY(created_at)'), '=', $i)->count();

            if ($i != 31) {
                $stats["tmv"] .= ",";
                $stats["tmd"] .= ",";
            }
        }

输出:

"tmv" => "11,4,1,13,0,5,15,2,0,24,1,7,17,18,45,14,31,61,3,1,4,1,1,27,30,47,18,60,10,0,156"

如何编辑查询以选择本周的数据,但仍输出如下计数:

"11,4,1,13,0,5,15"

【问题讨论】:

    标签: mysql arrays database laravel eloquent


    【解决方案1】:

    您的代码会生成很多查询,这非常糟糕。有很多方法可以通过一个查询来获取您想要的数据。例如,使用 Eloquent:

    Stats::where('created_at', '>', Carbon::now()->startOfWeek())
         ->where('created_at', '<', Carbon::now()->endOfWeek())
         ->get();
    

    如果您想获取另一周的数据而不是当前的数据,请使用另一个 Carbon 对象,例如 Carbon::parse('2017-05-01') 而不是 Carbon::now()

    【讨论】:

    • 我试过了,我得到 "tmv" => "48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, 48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48" 我正在尝试计算一周中的天数,而不是整周本身.
    • @rebirth1078 我看不到您的数据库数据,您究竟是如何获取数据的以及您期望的确切结果,所以我在这里帮不上忙,但我很确定如果您只想获取本周的数据,我的代码可以完美运行。
    • 是的,它非常适合获取本周的数据,我将尝试使其与另一个 foreach 一起工作
    猜你喜欢
    • 1970-01-01
    • 2020-12-17
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-13
    • 1970-01-01
    相关资源
    最近更新 更多