استفاده از متد when در eloquent لاراول چگونه است؟
استفاده از متد when
جهت ایجاد پرس و جوها در لاراول، یک روش اصولی در اختیار ما قرار میدهد که ما در این مقاله قصد داریم استفاده از آن را به شما آموزش دهیم. با لیداوب همراه باشید.
در لاراول روشهای زیادی برای ایجاد پرس و جوها توسط eloquent وجود دارد که پرکاربردترین آن استفاده از if-else
است. این روش برای شرطهای زیاد غیر منطقی به نظر میرسد و کدهای برنامه شما را شلوغ و ناخوانا میکند. در ادامه مقاله، استفاده از متدwhen
را به جای استفاده از روش if-else
که یک راه اصولی برای ایجاد پرس و جوها در لاراول ارائه میدهد را مورد بررسی قرار میدهیم.
تا مدتها اکثر برنامه نویسان، برای ایجاد پرس و جوها از پرسش و پاسخهای مشروط استفاده میکردند، مانند مثال زیر:
if (request('filter_by') == 'likes') {
$query->where('likes', '>', request('likes_amount', 0));
}
if (request('filter_by') == 'date') {
$query->orderBy('created_at', request('ordering_rule', 'desc'));
}
اما باید بگویم که راهی بسیار ساده وجود دارد که خواناتر و سادهتر است و آن استفاده از متد when()
است:
$query = Author::query();
$query->when(request('filter_by') == 'likes', function ($q) {
return $q->where('likes', '>', request('likes_amount', 0));
});
$query->when(request('filter_by') == 'date', function ($q) {
return $q->orderBy('created_at', request('ordering_rule', 'desc'));
});
$authors = $query->get();
استفاده از این روش اصولیتر به نظر میرسد. نظر شما چیست؟
بیشتر بخوانید:
شروع کار با Eloquent ها در لاراول
راهکار مناسب برای فیلتر پرس و جوهای رابطه ای با استفاده از Eloquentصبر کنید، هنوز نکات بیشتری در این زمینه وجود دارد
در مثال زیر، میخواهیم کاربرانی را استخراج کنیم که role (دسترسی) آنها با دسترسیهای که به پرس و جوی ما پاس داده میشود، مطابقت دارد.
پس پرس و جو به این صورت است که اگر پارامتری ارسال نشود، همه کاربران را مشاهده خواهید کرد، اما اگر پارامتری ارسال شود، خروجی بر اساس پارامترها ایجاد میشود. فرض کنید، role=>1
سطح دسترسی مدیران سایت است، اگر در پارمتر role
مقدار "1" فرستاده شود، خروجی ما فقط لیست مدیران سایت خواهد بود.
$query = User::query();
// From Laravel 5.4 you can pass the same condition value as a parameter
$query->when(request('role', false), function ($q, $role) {
return $q->where('role_id', $role);
});
$authors = $query->get();
این روش فقط روشی بهتر جهت نوشتن if-else نیست، بلکه میتواند یک روش عالی برای سازماندهی پرس و جوهای مشروط باشد.
در این مقاله، استفاده از متد when()
در لاراول را جهت سازماندهی پرس و جوهای مشروط مورد بررسی قرار دادیم. برای دانستن نکات بیشتر درباره این فریم ورک محبوب مقالات ما در لیداوب را از دست ندهید.
متاسفانه فقط اعضای سایت قادر به ثبت دیدگاه هستند
دیدگاه ها 0