Laravel 从each() 方法返回数组

问题描述 投票:0回答:1

我获得了一系列与特定用户的角色相关的权限,主要是为了让我开始使用热切加载和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());
});

谢谢!

php laravel closures each
1个回答
12
投票

只需通过引用传递

$permissions
变量即可:

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

注意

&
,现在您在函数外部声明了相同的变量,并且它位于当前范围内并在闭包内部进行了修改。所以,您可以在这里使用
$permissions
,例如:

dd($permissions); // dump and die
© www.soinside.com 2019 - 2024. All rights reserved.