Laravel从each()方法返回数组

时间:2014-02-17 22:08:57

标签: laravel closures each

我获得了一系列与特定用户角色相关的权限,主要是为了让我能够处理急切加载和each()方法

以这种方式创建$ permissions数组时,我怎样才能真正能够在闭包之外访问数组?

$user = User::with('roles.perms')->find(1);

$permissions = array();

$list = $user->roles->each(function($role) use($permissions)
{
    $permissions = array_merge($permissions, $role->perms->toArray());
});

谢谢!

1 个答案:

答案 0 :(得分:9)

只需通过引用传递$permissions变量:

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

注意&,现在您在函数外部声明了相同的变量,它在当前作用域中并在闭包内修改。那么,你可以在这里使用$permissions,例如:

dd($permissions); // dump and die