使用Laravel每月接收数据

时间:2018-01-12 18:31:02

标签: javascript php jquery laravel morris.js

我正在尝试创建一个每月显示数据的morrisJS折线图。 所以我每个月都得到这样的数据:

using Microsoft.EntityFrameworkCore.Design;
using Microsoft.Extensions.DependencyInjection;

public class MyDesignTimeServices : IDesignTimeServices
{
    public void ConfigureDesignTimeServices(IServiceCollection services)
    {
        services.AddSingleton<ICSharpHelper, MyCSharpHelper>();
    }
}

但是这将返回所有记录,在第1个月到第12个的范围内。但我想要的是每个月的数据,除了创建这样的多个变量之外,还能实现这个吗?

        $intakes = Intakes::whereYear('created_at', '=', 2018)
        ->orWhere(function ($query) {
            $query->whereMonth('created_at', '=', 1)
                ->whereMonth('created_at', '=', 2)
                ->whereMonth('created_at', '=', 3)
                ->whereMonth('created_at', '=', 4)
                ->whereMonth('created_at', '=', 5)
                ->whereMonth('created_at', '=', 6)
                ->whereMonth('created_at', '=', 7)
                ->whereMonth('created_at', '=', 8)
                ->whereMonth('created_at', '=', 9)
                ->whereMonth('created_at', '=', 10)
                ->whereMonth('created_at', '=', 11)
                ->whereMonth('created_at', '=', 12);
        })
        ->get();

我希望我足够清楚,有人知道更好的解决方案。

2 个答案:

答案 0 :(得分:4)

如果您需要Eloquent解决方案,请使用whereMonth()

for($i = 1; $i < 13; $++) {
    $intakes[$i] = Intakes::whereMonth('craeted_at', $i)->get();
}

您还可以获得一年中的所有摄入量,然后使用where() Laravel Collections方法获取一个月的摄入量:

$oneMonthData = $collection->where('created_at', '>', Carbon::parse($someDateString)->startOfMonth())->where('created_at', '<', Carbon::parse($someDateString)->endOfMonth());

答案 1 :(得分:0)

 $intakes = Intakes::whereDate('created_at', '<=', '01-01-2018 00:00:00')->whereDate('created_at', '<=', '01-02-2018 23:59:59')->get();