簡體   English   中英

Laravel從模型獲取所有相關數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM