laravel - Laravel 按日期和计数分组
问题描述
我正在尝试根据 start(date) 字段的计数向 Laravel eloquent 集合添加额外的信息。所以场景是我有一个“约会”表,如果任何一天有超过 10 个约会,我想向 eloquent 返回的集合中的对象添加额外的属性。我尝试了很多方法,例如分组和计数,但没有奏效。无论如何,我有下面的代码,我认为我非常接近它,但我一直在努力,但找不到如何让它实现我想要的。我想我被困住了,我不能再想了。我已经评论了大部分行。
$allAppointments = Appointment::get($columns); //returning all the appointments
$days = Appointment::get()->groupBy(function ($val) {
return Carbon::parse($val->start)->format('d');
}); //here I'm returning appointments by group without the count
$counter = [];
foreach ($days as $day => $appointments) {
foreach ($appointments as $appointment) {
if (Carbon::parse($appointment->start)->format('d') == $day) {
$counter = [Carbon::parse($appointment->start)->format('d') => $day]; //here I'm trying to make an array and count the days but not working
}
dd($counter);
foreach ($allAppointments as $allAppointment) {
if (Carbon::parse($allAppointment->start)->format('d') == $day && count($counter) == 10) //here I want to compare the dates and check if that day have more than 10 appointments
$allAppointment->setAttribute('backgroundColor', 'red'); //here I want to add the extra information
}
}
}
解决方案
尝试以下操作:
Appointment::select(DB::raw('if(count(*) > 10, true, false) as more_than_ten_appointment'))->groupBy(function ($val) {
return Carbon::parse($val->start)->format('d');
})->get();
如果 DB 类不存在,则在命名空间后添加:
use DB;
推荐阅读
- pyspark - 使用高性能选择操作重命名 PySpark DataFrame 中的列
- python - 增加一个整数并在循环中写入输出 xml
- r - 如何使用 Shiny R 在一页中出现“运行代码”按钮,然后在按下并完成计算时出现一个新页面并显示结果
- php - 如果不存在帖子,则隐藏循环
- curl - 卷曲 POST 请求到 grails 控制器
- android - 如何更改溢出菜单图标的大小
- javascript - 多次触发模糊/焦点事件
- swift - 共享数据库中没有使用 NSPersistentCloudKitContainer 的父记录的子记录
- javascript - 为什么 MediaRecorder 在 Firefox 上显示为空白,但在 Chrome 上却没有?
- snowflake-cloud-data-platform - 雪花 - COPY INTO ... 忽略 DATE_INPUT_FORMAT 设置