首页 > 解决方案 > 如何从刀片中的循环中获取记录的当前月份

问题描述

我正在尝试从两个表 USER 和 SALES 表中获取记录...但我只需要每个用户在当月完成的销售额。

我正在使用此函数从两个表中获取所有记录

$everyone = User::with('sales')->get();

然后在我看来我正在这样做

@foreach($everyone as $item)

$item->sales->sum('sales')

@endforeach

但我只想在视图中获得当月的销售额..如何在视图中添加月份

我努力了

$item->sales->whereMonth('created_at', Carbon::now()->month)->sum('sales')

但不工作

标签: laravel

解决方案


您可以使用whereHas()方法,whereHas()工作原理基本相同,has()但允许您为相关模型指定额外的过滤器以检查:

$everyone = User::whereHas('sales', function ($query) {
        $query->whereMonth('created_at', Carbon::now()->format('M'));
})->get();

此方法不再支持Laravel 5.4。此方法适用于 Laravel 5.5 及更高版本

以下代码未经我测试。希望这有效:

$everyone = User::with(['sales' => function ($query) { 
                   $query->whereMonth('created_at', Carbon::now()->format('M'));
            }])
           ->get();

推荐阅读