Laravel returning array from each() method

closures, each, laravel

Solution

Just pass the `$permissions` variable by reference:

$user->roles->each(function($role) use(&$permissions) { //<-- passed by reference
    $permissions = array_merge($permissions, $role->perms->toArray());
});

Notice the `&`, now you have the same variable declared outside the function and it's in your current scope and modified inside the closure. SO, you can use the `$permissions` here, for example:

dd($permissions); // dump and die

Problem

I am getting an array of permissions related to the roles of a specific user, mainly as a way to get my head around working with eager loading and the each() method When creating a $permissions array in this manner, how would I actually be able to access the array outside the closure? ``` $user = User::with('roles.perms')->find(1); $permissions = array(); $list = $user->roles->each(function($role) use($permissions) { $permissions = array_merge($permissions, $role->perms->toArray()); }); ``` Thanks!

Original source