Вот текущий код:
@php
$minDay = 1;
$maxDay = 31;
@endphp
<table>
<!-- Первый уровень шапки -->
<tr>
<td rowspan="3" style="background-color: #DDEBF7">№ п/п</td>
<td rowspan="3" style="background-color: #DDEBF7">ФИО</td>
<td rowspan="3" style="background-color: #DDEBF7">Подразделение</td>
<td rowspan="3" style="background-color: #DDEBF7">Доп. инфо</td>
<td rowspan="3" style="background-color: #DDEBF7">imei</td>
<td colspan="{{ $maxDay - $minDay + 1 }}" style="background-color: #DDEBF7">
Пройденное расстояние по дням месяца, км
</td>
<td rowspan="3" style="background-color: #DDEBF7">Сумма, км</td>
</tr>
<!-- Второй уровень шапки: название месяца -->
<tr>
<td colspan="{{ $maxDay - $minDay + 1 }}" style="background-color: #DDEBF7">
Март
</td>
</tr>
<!-- Третий уровень шапки: дни -->
<tr>
@foreach(range($minDay, $maxDay) as $num)
<td style="background-color: #DDEBF7">{{ $num }}</td>
@endforeach
</tr>
<!-- Данные -->
@foreach($items as $item)
<tr>
<td>{{ $loop->iteration }}</td>
<td>{{ $item['w_fio'] }}</td>
<td>{{ $item['department'] ? $item['department']['d_name'] : '' }}</td>
<td>
{{ $item['asup'] && $item['asup']['lk43'] ? 'уволен '. date('d.m.Y', strtotime($item['asup']['lk43'])) : '' }}
{{ $item['w_closedate'] ? 'закрыт '. date('d.m.Y', strtotime($item['w_closedate'])) : '' }}
</td>
<td>
{{ $item['trackers'] ? array_reduce($item['trackers'], function($concat, $tracker) { return $concat . $tracker['t_imei'] . ' '; }, '') : '' }}
</td>
<!-- Пройденное расстояние по дням -->
@foreach(range($minDay, $maxDay) as $num)
<td>{{ array_key_exists($num, $item['daily']) ? $item['daily'][$num]['d_distance'] : '' }}</td>
@endforeach
<!-- Сумма по всем дням -->
<td style="font-weight: bold;">
{{ number_format(collect($item['daily'] ?? [])->sum('d_distance'), 3, '.', ' ') }}
</td>
</tr>
@endforeach
</table>
Теперь запрос формируется так, что вместо поля daily используется поле date в формате ''Y-m-d". Твоя задача - доработать код.
1) вначале найти минимальную и максимальную дату среди всех записей
2) отрисовать поля только для нужного диапазона.
Например, если диапазон от 20.03.2026 до 05.04.2026, то нужно отрисовать месяц март, под ним числа от 20 до 31, потом апрель от 1 до 5, и под ними уже расстояния.
В результате выведи новый код полностью.