Laravel Tutorials

Laravel Collection “tap” Method

Published
Laravel Collection “tap” Method image

Laravel 5.4.10 introduces a new tap method on collections which allow you to “tap” into the collection at a specific point and do something with the results while not affecting the main collection.

This feature is best described through examples and let’s pretend you have the following array:

$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]
];

Now we convert this into a collection, filter the data, and tap into it at two different points:

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'));
});

Once this runs it’ll output the following the following for the first tap:

David Charleston, Megan Tarash, Jonathan Phaedrus, Paul Jackson

Then the second:

David Charleston, Megan Tarash, Jonathan Phaedrus

Tap versus Pipe

Laravel also provides another similar method to tap named pipe and they are similar in that they can be performed inside a collection pipeline. However, they have one primary difference:

Tap allows you to do something with the data available but it does not modify the original. Pipe modifies the results in the collection based on its return value. For instance:

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
Eric L. Barnes photo

Eric is the creator of Laravel News and has been covering Laravel since 2012.

Sponsored

masteringlaravel logo
Laravel Code Review

Get expert guidance in a few days with a Laravel code review

Visit Laravel Code Review

The latest

View all →
Fluent Rule Builders for All Laravel Validation Rules image

Fluent Rule Builders for All Laravel Validation Rules

Read article
Laravel URL AI Transformer: Extract Structured Data From URLs image

Laravel URL AI Transformer: Extract Structured Data From URLs

Read article
Rule Builders for Every Validation Rule in Laravel 13.36 image

Rule Builders for Every Validation Rule in Laravel 13.36

Read article
PHP News: A New Site for PHP Releases, RFCs, and Packages image

PHP News: A New Site for PHP Releases, RFCs, and Packages

Read article
Pause Polling in Background Tabs in Inertia.js v3.9 image

Pause Polling in Background Tabs in Inertia.js v3.9

Read article
Look What You Helped Me Build image

Look What You Helped Me Build

Read article