یکی از ویژگی های خوب لاراول Laravel Collections است، با استفاده از این ویژگی میتوانیم روی مجموعه ها کوئری بزنیم و حتی خروجی ها را فیلتر کنیم، Laravel Collections دارای متدهای متعددی است که یکی از آنها متد when است، ما در این مقاله نحوه استفاده از آن را به شما یاد خواهیم داد.


با انتشار لاراول 5,4 متد when به laravel collections  اضافه شد، با استفاده از این متد می توانیم برای حلقه ها شرط ایجاد کنیم بدون آنکه شرط شکسته شود.

همانند سایر متدهای Laravel Collections این متد هم می تواند بسیاری از موارد استفاده را داشته باشد. اما نمونه ای که به ذهن من می رسد، دریافت یک query string parameter است که بر اساس آن مجموعه مورد نظر را فیلتر کنیم.

 Laravel Collections و استفاده از متد when

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

$users = [
    ['name' => 'Eric Barnes', 'location' => 'USA', 'is_active' => 0],
    ['name' => 'Jack Fruh', 'location' => 'USA', 'is_active' => 0],
    ['name' => 'Jacob Bennett', 'location' => 'USA', 'is_active' => 1],
    ['name' => 'Michael Dyrynda', 'location' => 'AU', 'is_active' => 1],
];

اگر بخواهیم خروجی مجموعه را فیلتر کنیم، به طور معمول از روش معمولی (بدون استفاده از متد when ) استفاده می کنیم :

$inUsa = collect($hosts)->where('location', 'USA');

if (request('retired')) {
    $inUsa = $inUsa->filter(function($employee){
        return ! $employee['is_active'];
    });
}

اما با استفاده از متد when می توانید این فیلتر را در خود مجموعه اضافه کنید:

$inUsa = collect($hosts)
    ->where('location', 'USA')
    ->when(request('retired'), function($collection) {
        return $collection->reject(function($employee){
            return $employee['is_active'];
        });
    });

گردآورنده: سعید هوشیار - لیداوب

لاراول
فقط
خوش آمدید!
ایجاد حساب کاربری