2014-02-17 70 views
1

我正與一個特定用戶的角色權限的數組,主要是作爲一個辦法讓我的頭周圍的預先加載的工作和各()方法陣列Laravel返回從每()方法

當以這種方式創建$ 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()); 
}); 

謝謝!

回答

7

參照剛剛通過$permissions變量:

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

通知的&,現在你必須聲明的功能之外的相同變量,它在當前的範圍和修改瓶蓋內。所以,您可以在這裏使用$permissions,例如:

dd($permissions); // dump and die 
+2

啊,對。封閉默認複製到範圍內。感謝那! – drpudding

+0

@drpudding,歡迎:-) –

+0

這個答案對我來說同樣有用,但這次數組合並沒有像預期的那樣工作,所以我改成了'$ permission [] = $ role-> perm - >指定者();' –