[英]Laravel Get all related data from models
我有2多對多關系,並嘗試獲取所有相關數據。 用戶模型:
public function roles()
{
return $this->belongsToMany('App\Role', 'user_role_pivot', 'user_id', 'role_id');
}
榜樣:
public function rolepermissions()
{
return $this->belongsToMany('App\RolePermission', 'role_permissions_connect', 'role_id', 'role_perm_id');
}
我正在制定政策,並希望從我的rolepermissions
獲得所有價值。
我的政策:
public function createrole(User $user)
{
foreach ($user->roles as $role) {
foreach ($role->rolepermissions as $permission) {
return $permission->permission_name;
}
}
}
它僅返回一個結果,但是我想從角色權限中獲取所有相關數據。
一旦函數點擊return
,它將停止執行並返回結果。 例如,它與C#中的yield return
不同,在C#中,您實際上可以返回多個值。
無論如何,您可能想將所有內容添加到數組,然后使用您的數組執行操作,如下所示:
public function createrole(User $user) {
$array = [];
foreach ($user->roles as $role) {
foreach ($role->rolepermissions as $permission) {
array_push($array, $permission);
}
}
dd($array); //add this line if you want to see your array's items
foreach($item in $array){
//do something
}
}
現在我們無論如何都在執行最佳實踐,您也可以這樣做:
foreach ($user->roles as $role) {
foreach ($role->rolepermissions as $key => $permission) {
$array[$key] = $permission;
}
}
從性能角度來看,這可能更有效。
您要返回$permission->permission_name
因此return
強制該函數停止執行。 您最好返回一個數組。
$roles = [];
foreach ($user->roles as $role) {
foreach ($role->rolepermissions as $permission) {
$roles[] = $permission->permission_name;
}
}
}
return $roles;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.