mgsmus Kolay gelsin tekrar. Ben olayı tam çözemedim hala 🙂
Şimdi Controller bu şekilde.
public function store(Request $request)
{
$date = Date::parse($request->reserved_at);
$time = $request->reserved_time;
$slot = Slot::find(1);
{
$available = Reservation::selectRaw('sum(id) as total_reservations')
->whereDate('reserved_at', $date)
->where('slot_id', $slot->id)
->groupBy('slot_id')
->having('total_reservations', '<', $slot->max_reservations)
->exists();
if($available) {
$reservations = Reservation::create([
'name' => $request->name,
'reserved_at' => $request->reserved_at,
'reserved_time' => $request->reserved_time,
'hotel_name' => $request->hotel_name,
'room_number' => $request->room_number,
'phone_number' => $request->phone_number,
'tour_id' => $request->tour_id,
'notes' => $request->notes,
'pax' => $request->pax,
]);
return redirect()->route('reservations.index',compact('reservations'));
}
}
Slot Tablomda şu şekilde.
Schema::create('slots', function (Blueprint $table) {
$table->id();
$table->date('reserved_date');
$table->time('reserved_time');
$table->integer('max_res');
$table->timestamps();
});
Ben düşündüm ki. Oluşturulan her rezervasyonu slot tablosuna yazdırıcam. Fakat önce reservation oluştururken burdaki tablodaki date ve time ile karşılaştırmam gerekiyor. Fakat bu controllerda yazdığınız şu kısımda takıldım.
$slot = Slot::find(1); Şimdi ben bu slottaki date time ile istenen date time nasıl karşılaştırabilirim. Sizce doğru yoldan mı gittim. Çok komplike olmasın dedim.
Ayriyeten reservasyon tablomda şu şekilde
Schema::create('reservations', function (Blueprint $table) {
$table->id();
$table->foreignId('slot_id')->constrained();
$table->foreignId('user_id')->constrained();
$table->foreignId('tour_id')->constrained();
$table->tinyInteger('status')->default(1);
$table->date('reserved_at');
$table->time('reserved_time');
$table->string('name');
$table->string('hotel_name');
$table->string('room_number')->nullable;
$table->string('phone_number')->nullable;
$table->integer('pax');
$table->string('notes')->nullable;
$table->timestamps();
});