php - 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
请帮忙
解决方案
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])
使用时要小心,因为还会比较时间,所以结果不会很好用whereBetween
datetime
whereBetweenColumn('date(date)', [$start, $end])
推荐阅读
- android - Google Assistant 语音搜索集成不适用于多个单词
- node.js - 用 3 个表对嵌套关联进行 Sequelize
- python - 如何在所有列排列上最小化正矩阵的轨迹
- ios - iOS Safari:经常发送的 ajax 调用有时无法到达服务器
- java - 套接字异常:twilio API 的连接重置
- php - Lumen:处理服务层内的错误消息
- git - Git Move 2 旧提交到现有分支
- javascript - 复制 iA Writer 的焦点模式
- php - Var 将 HTTP POST 转储到 fwrite 文件中
- javascript - Android Chrome SharedWorker 问题