احسان رضوی
4 سال پیش توسط احسان رضوی مطرح شد
1 پاسخ

نحوه‌ی کوئری برای ثبت و رزرو اتاق در لاراول

با سلام
من قصد دارم در یک سیستم رزرو اتاق ساده، در لاراول یک کوئری بزنم که به من نمایش بده که آیا اتاق در بازه زمانی انتخاب شده خالیست یا پُر که نسبت به اون، به کاربر اجازه رزرو بدم.
به این صورت که کاربر «تاریخ ورود»، «تاریخ خروج» و «اتاق» مورد نظر را انتخاب می‌کنه و من در جدولم اگر چنین رکوردی داشته باشم، طبیعتاً اجازه رزرو نخواهد داشت. در غیر اینصورت هم که رزرو آزاد است.
حالا کوئری‌ای که نوشتم به این صورته:

$exists = Reserve::select('room_number')
    ->where(function ($query) use ($from, $till) {
        $query->whereBetween('from', [$from, $till])
            ->orWhereBetween('till', [$from, $till]);
    })->orWhere(function ($query) use ($from, $till) {
        $query->where('from', '<=', $from)
            ->where('till', '>=', $till);
    })
    ->first();

حالا سؤالی که دارم آیا شرط‌های این کوئری کافی‌اند و نتیجه‌ی درستی رو در همه‌ی حالت‌ها به من می‌دن؟ (اگر اصلاحاتی باید داشته باشه لطفاً راهنمایی کنید)

@hesammousavi
@ali.bayat