Laravel 11 / BelongsToMany::orWherePivotNotBetween()

laravel 11 belongstomany orwherepivotnotbetween
20 مرداد 1404

آشنایی با متد BelongsToMany::orWherePivotNotBetween در لاراول ۱۱


سلام دوستان! امروز می‌خواهیم با یکی از متدهای جالب در لاراول ۱۱ آشنا بشیم به نام orWherePivotNotBetween که در رابطه با ارتباطات BelongsToMany از آن استفاده می‌کنیم. توی لاراول، وقتی با روابط پیچیده‌تری مواجه می‌شیم، این متد می‌تونه یکی از ابزارهای کارآمد ما باشه.


خب، اول از همه، بگم که BelongsToMany یکی از انواع روابط در لاراول هست. اگر شما دو مدل دارید که با هم ارتباط بسیاری به بسیاری دارند، می‌تونید از این رابطه استفاده کنید. این متد به ما این امکان رو می‌ده که شروط خاصی رو برای رکوردهای موجود در جدول میانه (pivot table) اضافه کنیم.


محور این متد اینه که ما می‌خوایم رکوردهایی رو پیدا کنیم که در یک بازه خاص نیستند. ممکنه شما بخواید کاربرانی رو پیدا کنید که در یک تاریخ خاص، ارتباطی با محصولی نداشتند. این متد دقیقاً این نیاز رو برآورده می‌کنه.


به عنوان مثال، فرض کنید که ما یک پروژه مدیریت وظایف داریم و می‌خواهیم وظایفی رو پیدا کنیم که توسط یک کاربر مشخص در یک تاریخ معین انجام نشده باشد. در اینجا orWherePivotNotBetween می‌تونه به ما کمک کنه تا فقط وظایف خارج از آن بازه زمانی را فیلتر کنیم.


حالا با هم نگاهی به نحوه استفاده از این متد می‌اندازیم و مدلی رو ایجاد می‌کنیم که نشان‌دهنده این عملکرد باشه.


$tasks = $user->tasks()
->orWherePivotNotBetween('created_at', [$startDate, $endDate])
->get();

توضیح کد


در این کد، ما ابتدا وظایفی که به یک کاربر خاص ($user) تعلق دارد را دریافت می‌کنیم.




سپس با استفاده از متد orWherePivotNotBetween، شرایط فیلتر کردن را اضافه می‌کنیم تا رکوردهای موجود در بازه زمانی مشخص شده ($startDate تا $endDate) را نادیده بگیریم.




در نهایت با استفاده از متد get()، تمام وظایف مناسب را دریافت می‌کنیم. این کد ساده، اما بسیار کارآمد است و می‌تونه به ما کمک کنه تا اطلاعات دقیقی از پایگاه داده بگیریم.


سوالات متداول

؟

متد orWherePivotNotBetween چطور کار می‌کند؟

؟

چه زمانی باید از این متد استفاده کنم؟

؟

آیا می‌توانم چندین شرط را با این متد اضافه کنم؟