در لاراول 5.4.10 متد جدیدی به نام tap اضافه شده است که می توانید روی collection ها عملیات فیلتر و جستجو انجام دهید و خروجیهای مد نظر خود رو دریافت کنید.برای مثال آرایه زیر را در نظر بگیرید:
$items = [
['name' => 'David Charleston', 'member' => 1, 'active' => 1],
['name' => 'Blain Charleston', 'member' => 0, 'active' => 0],
['name' => 'Megan Tarash', 'member' => 1, 'active' => 1],
['name' => 'Jonathan Phaedrus', 'member' => 1, 'active' => 1],
['name' => 'Paul Jackson', 'member' => 0, 'active' => 1]
];
حالا عملیات زیر را بر روی آن انجام دهید:
return collect($items)
->where('active', 1)
->tap(function($collection){
return var_dump($collection->pluck('name'));
})
->where('member', 1)
->tap(function($collection){
return var_dump($collection->pluck('name'));
});
خروجی اول مقدار زیر را مشاهده خواهید کرد:
David Charleston, Megan Tarash, Jonathan Phaedrus, Paul Jackson
و در خروجی دوم مقدار زیر را مشاهده خواهید کرد:
David Charleston, Megan Tarash, Jonathan Phaedrus
متد pipe بسیار شبیه متد tap می باشد با این تفاوت که شما به خروجی می توانید داده یا داده هایی را اضافه کنید به مثال زیر توجه کنید:
return collect($items)
->where('active', 1)
->pipe(function ($collection) {
return $collection->push(['name' => 'John Doe']);
});
// David Charleston, Megan Tarash, Jonathan Phaedrus, Paul Jackson, John Doe
استفاده درست از این دو متد به شما اجازه می دهد که از بازخوانی چند باره اطلاعات از دیتابیس خودداری کنید و یک بار دیتا را گرفته و با این ابزارها، عملیات جستجو و فیلتر را روی خروجی خود انجام دهید که به سرعت نرم افزار شما بسیار کمک خواهد کرد.