Efficiently filtering data with Laravel's `partition()` method

Laravel devs, here's a gem for you: πŸ’Ž

The Laravel Collection class is packed with powerful methods that can simplify your coding tasks. One such feature is the partition() method. This method allows you to split a collection into two groups based on a condition, making it easier to handle and filter data efficiently. Let's explore how to use this method with a real-life example.

What is partition()?

The partition() method divides a collection into two collections based on a given condition. It returns an array containing two collections: the first collection contains elements that satisfy the condition, and the second collection contains elements that do not.

Real-Life Example: Filtering Employees by Position

Imagine you are managing a company directory, and you want to separate employees into two groups: Managers and Programmers. Using the partition() method, you can achieve this easily.

Example Code

use Illuminate\Support\Collection;

// Collection of employees
$employees = collect([
    ['name' => 'Alice', 'position' => 'Manager'],
    ['name' => 'Bob', 'position' => 'Programmer'],
    ['name' => 'Carl', 'position' => 'Manager'],
    ['name' => 'Darcy', 'position' => 'Programmer'],

// Partition the employees into managers and programmers
[$managers, $programmers] = $employees->partition(function ($employee) {
    return $employee['position'] === 'Manager';

// Display the results
echo "Managers:\n";

echo "\nProgrammers:\n";


    ['name' => 'Alice', 'position' => 'Manager'],
    ['name' => 'Carl', 'position' => 'Manager']

    ['name' => 'Bob', 'position' => 'Programmer'],
    ['name' => 'Darcy', 'position' => 'Programmer']

In this example, we start with a collection of employees, each with a name and a position. Using the partition() method, we split the employees into two groups: managers and programmers. This allows us to handle and process each group separately, making our code cleaner and more efficient.


The partition() method is a powerful addition to the Laravel Collection methods, allowing you to handle and filter data efficiently. By leveraging this method, you can ensure that your application processes data in a clean and maintainable way.

Subscribe to Harris Raftopoulos

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.