آشنایی با متد BelongsToMany::orWherePivotNotBetween در لاراول ۱۱
سلام دوستان! امروز میخواهیم با یکی از متدهای جالب در لاراول ۱۱ آشنا بشیم به نام orWherePivotNotBetween
که در رابطه با ارتباطات BelongsToMany
از آن استفاده میکنیم. توی لاراول، وقتی با روابط پیچیدهتری مواجه میشیم، این متد میتونه یکی از ابزارهای کارآمد ما باشه.
خب، اول از همه، بگم که BelongsToMany
یکی از انواع روابط در لاراول هست. اگر شما دو مدل دارید که با هم ارتباط بسیاری به بسیاری دارند، میتونید از این رابطه استفاده کنید. این متد به ما این امکان رو میده که شروط خاصی رو برای رکوردهای موجود در جدول میانه (pivot table) اضافه کنیم.
محور این متد اینه که ما میخوایم رکوردهایی رو پیدا کنیم که در یک بازه خاص نیستند. ممکنه شما بخواید کاربرانی رو پیدا کنید که در یک تاریخ خاص، ارتباطی با محصولی نداشتند. این متد دقیقاً این نیاز رو برآورده میکنه.
به عنوان مثال، فرض کنید که ما یک پروژه مدیریت وظایف داریم و میخواهیم وظایفی رو پیدا کنیم که توسط یک کاربر مشخص در یک تاریخ معین انجام نشده باشد. در اینجا orWherePivotNotBetween
میتونه به ما کمک کنه تا فقط وظایف خارج از آن بازه زمانی را فیلتر کنیم.
حالا با هم نگاهی به نحوه استفاده از این متد میاندازیم و مدلی رو ایجاد میکنیم که نشاندهنده این عملکرد باشه.
$tasks = $user->tasks()
->orWherePivotNotBetween('created_at', [$startDate, $endDate])
->get();
توضیح کد
در این کد، ما ابتدا وظایفی که به یک کاربر خاص ($user
) تعلق دارد را دریافت میکنیم.
سپس با استفاده از متد orWherePivotNotBetween
، شرایط فیلتر کردن را اضافه میکنیم تا رکوردهای موجود در بازه زمانی مشخص شده ($startDate
تا $endDate
) را نادیده بگیریم.
در نهایت با استفاده از متد get()
، تمام وظایف مناسب را دریافت میکنیم. این کد ساده، اما بسیار کارآمد است و میتونه به ما کمک کنه تا اطلاعات دقیقی از پایگاه داده بگیریم.