首页 > 解决方案 > Laravel 与条件关系的总和

问题描述

我有以下查询,其中有两个模型之间的关系的条件查询。我需要满足条件的出勤总和。我尝试了以下方法,但它不起作用。

$users = User::with('attendance')
            ->whereHas('attendance', function (Builder $query) use ($end, $start) {
                $query->whereBetween('date', [$start, $end])
                ->where('status', 2)
                ->select(DB::raw('SUM(hours) as h'));
            })->orderBy('name')
            ->where('status', 0)
            ->get();

在我的刀

@foreach($users as $user)
    {{ $user->h }}
@endforeach

请帮忙

标签: phplaravel

解决方案


User::whereHas('attendance')
            ->withSum(['attendance' => function ($query) use ($start, $end){
                $query->whereBetween('date', [$start, $end])
                    ->where('status', 2);
            }], 'hours')
            ->get();

您可以使用attendance_sum_hours属性 ( {relation}_{function}_{column})访问总小时数

$user->attendance_sum_hours

小费:

还有一件事; 在列上$query->whereBetween('date', [$start, $end])使用时要小心,因为还会比较时间,所以结果不会很好用whereBetweendatetimewhereBetweenColumn('date(date)', [$start, $end])


推荐阅读