• Uyarı

Soru Laravel tarih aralığındaki haftasonu ve tatil günlerini göstermeme

  • Konbuyu başlatan goktug
  • Başlangıç tarihi

goktug

New member
#1
Merhaba arkadaşlar,
Controllerdan gönderdiğim tarih aralığındaki tarihleri görüntüleyebiliyorum. Aylık raporumda seçilen gün sayısı kadar tarihler geliyor. Ancak cumartesi pazara ait zaten kayıt eklenmiyor o yüzden view da görüntülerken verisi olmayan tarihlerde gösteriliyor. Bunu nasıl çözebiliriz?

Controller içeriği

$endDate = $request->date(‘tarih’) ?? today();

// Başlangıç tarihi, bitiş tarihinden 10 gün öncesi
$startDate = $endDate
->copy()
->subDays(10);

$dates = CarbonPeriod::create($startDate, $endDate);

$records = Girisler::whereBetween(‘tarih’, [$startDate, $endDate])
->select(‘urun_id’, ‘tedarikci_id’, ‘toplam’, ‘tarih’)
->latest(‘tarih’)
->get();

$productIds = $records
->pluck(‘urun_id’)
->unique()
->values()
->toArray();

$supplierIds = $records
->pluck(‘tedarikci_id’)
->unique()
->values()
->toArray();

$productSelectbox = Urun::whereIn(‘id’, $productIds)
->select(‘id’, ‘name’)
->pluck(‘name’, ‘id’);

$suppliers = Tedarikci::whereIn(‘id’, $supplierIds)
->select(‘id’, ‘name’)
->get();

$columns = collect($records)
->groupBy(‘tarih’)
->map(function($items) {
return $items
->groupBy(‘tedarikci_id’)
->map(fn($items) => $items->sum(‘toplam’));
})
->toArray();

Tablo içeriği

<table>
<thead>
<tr>
<th>Tedarikçi</th>
@foreach($dates as $date)
<th>{{ $date->format(‘d.m.Y’) }}</th>
@endforeach
</tr>
</thead>
<tbody>
@foreach($suppliers as $supplier)
<tr>
<td>{{ $supplier->name }}</td>
@foreach($dates as $date)
<td>{{ data_get($columns, “{$date->toDateString()}.{$supplier->id}”) ?? ‘-’ }}</td>
@endforeach
</tr>
@endforeach
</tbody>