فیلتر کردن نتایج query ها با شروط مختلف
ﺯﻣﺎﻥ ﻣﻄﺎﻟﻌﻪ: 2 دقیقه

فیلتر کردن نتایج query ها با شروط مختلف

شاید عنوان این مطلب برای شما کمی گیج کننده باشه ، اما بزارید براتون با یک مثال سادش کنم شما دارای لیستی از مشتری هستید و اونا رو با دستور Customer::all() نمایش میدید اما شما میخواین دو لیست جداگانه از مشتری های که در کشور انگلیس و کشور خودمون هستن رو به نمایش بزارید . خوب شما چطور این کار رو برای ساخت دو لیست جداگانه از یک دستور انجام میدید ؟ برای این کار یک تابع به نام filter() وجود داره.

در زیر مثالی برای درک بهتر filter میزنم ، بطور معمول شما اطلاعات مشتریهاتون رو بصورت زیر دریافت میکنید.

$customers = Customer::all();

پس از برگشت اطلاعات بصورت بالا شما با استفاده از یک function داخل filter() به راحتی میتونید شرط خودتون برای نمایش اطلاعات رو مشخص کنید. بصورت زیر 

$uk_customers = $customers->filter(function ($customer) {
    return $customer->country == 'United Kingdom';
});

حالا شما دارای یک مجموعه (collection) جدید داخل متغیر $uk_customers هستید ، اما متغیر قدیمی $customers هنوز بدونه تغییر باقی مونده و شما میتونید برای داشتن لیست بعدی ازش استفاده کنید . حالا در زیر فیلتر دیگه ای برای مشتری های که در کشور خودمون هستن با متغیر بدون تغییر $customers بوجود میاریم .

$ir_customers = $customers->filter(function ($customer) {
    return $customer->country == 'Iran';
});

خب ، حالا شما داری دو لیست جدا گانه در متغیر های $uk_customers و $ir_customers هستید و میتونید از هر کدوم بطور جداگانه و در جداول جداگانه استفاده کنید . 

همچنین  تابع دیگه ای به اسم reject() وجود داره که عملی برعکس کار تابع filter رو انجام میده . برای مثال شما میخواین همه مشتری هاتون بجز مشتری های کشور انگلیس رو داشته باشید باید از کد زیر استفاده کنید . 

$non_uk_customers = $customers->reject(function ($customer) {
    return $customer->country == 'United Kingdom';
});

امیدوارم براتون مفید بوده باشه 

چه امتیازی برای این مقاله میدهید؟

خیلی بد
بد
متوسط
خوب
عالی
در انتظار ثبت رای

/@hesammousavi
حسام موسوی
طراح و برنامه نویس

بیشتر از ۱۵ سال هست که در حال برنامه‌نویسی و انجام پروژه های مختلف هستم و ۱۰ سالی هست که آموزش برنامه‌نویسی به علاقمندان حوزه برنامه نویسی میدیم در همه این مدت الان عاشق کدزنی و چالش‌های پروژه‌های مختلفم. به تدریس علاقه خاصی دارم و دوست دارم دانشی که در این راه بدست آوردم را در اختیار دیگران هم قرار بدم. 

دیدگاه و پرسش

برای ارسال دیدگاه لازم است وارد شده یا ثبت‌نام کنید ورود یا ثبت‌نام

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

در حال دریافت نظرات از سرور، لطفا منتظر بمانید