سلام دوستان
واسه یه سایت رزرواسیون قرار یه آپشن جستجویی قرار داده بشه که به اینصورته:
-تاریخ شروع و پایان مورد نظر کاربر رو واسه رزرو میگیریم.
-ساختار دیتابیس هم به اینصورته که که یک جدول واسه رزروها هست که در آن تاریخ شروع و پایان رزروهای انجام شده ذخیره میشه.مثلا ممکنه یک ویلا چندین سطر داشته باشه و هر سطر مربوط به یک رزرو و کاربر هستش و هر کدوم تاریخ شروع و پایانی داره.حالا مشکل اینجاست که جستجو باید به چه شکل انجام بشه که فقط ویلاهایی رو برگردونم که در اون بازه تاریخ دریافتی از کاربر،رزروی نداشته باشند؟؟
چه روالی رو طی کنم که نتیجه درستی دریافت کنم؟
نمونه ای از جدول رزروها:
مثلا کاربری بازه زیر رو وارد میکنه واسه سرچ:
1400/1/10 تا 1400/1/14
ویلاهایی باید برگشت داده بشن که این بازه شون خالیه و میشه رزرو کرد...
خیلی ممنون
@ali.bayat
@milad
@AliValinejad
@mhyeganeh
@Rp76
@juza66
@mehdi.shahabbasian
سلام وقتتون بخیر!
$query->whereBetween('age', [$ageFrom, $ageTo]);
میشه از این قابلیت استفاده کرد.
البته این چیزی که میخوای پیچیده تره
۲ تا شرط میخواد یکی برای start و دیگری end
@Rp76
متاسفانه این چیزی که شما گفتین واسه این مورد کارساز نیست.
چون اینی که شما میگین اونایی رو برمیگردونه که مابین اون دو تا تاریخ هست.
ولی من میخوام بین اون دو تا تاریخ نباشه و چیزی که پیجیده ش کرده اینه که ممکنه چندین رزرو یا سطر برای هر ویلا داشته باشم که باید با همه مقایسه بشه اون تاریخ درخواستی کاربر.
با توجه به ساختاری که انتخاب کردی.. موقع رزرو باید حتما چک کنی که اون بازه زمانی خالی باشه
و برای کوئری زمانهای خالی هم میتونی از متد whereNotBetween استفاده کنی
ساختار بهینه ای هستش بنظرتون؟ @ali.bayat
چون فرض کنید هر بار که یه کاربر یه جستجویی انجام میده باید هربار با همه مقایسه ش کنم...البته دیتا رو صفحه بندی هم میکنم و خیلی محدودش میکنم که زیاد سرور درگیر نشه.
روش های مختلف کار با دیتابیس هر کدوم مزایا و معایب خودشون رو دارند
باید با حجم بالایی از داده های فیک امتحان کنی و کوئری بزنی و زمان ها رو بسنجی .. ببینی بهینه هست یا نه
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟