我正在開發一個使用 Laravel 構建的應用程序,在后端我有一些雄辯的 2 個表之間的多對多關系,主要分別是角色和權限。還有一個名為 role_permission 的數據透視表。我在模型中創建了關系,并且在控制器中捕獲以下值以創建權限:name, description , slug, role_id。在邏輯上,將名稱、描述和 slug 存儲在權限表中,而 role_id 存儲在數據透視表 (role_permission) 中。這工作正常。在響應中,我獲取存儲在權限表中的所有權限并顯示為 JSON 對象。問題是我想獲取數據透視表中的 role_id 并附加到顯示為響應的每個 JSON 對象。榜樣<?phpnamespace Modules\API\Entities;use Modules\API\Entities\Permission;use Illuminate\Database\Eloquent\Model;class Role extends Model{ protected $fillable = ['name' , 'slug' , 'description']; /** * A role has more than one permission */ public function permissions(){ return $this->belongsToMany(Permission::class , 'role_permission'); }}權限模型<?phpnamespace Modules\API\Entities;use Modules\API\Entities\Role;use Illuminate\Database\Eloquent\Model;class Permission extends Model{ protected $fillable = ['name' , 'slug' , 'description']; /** * A permission has more than one role */ public function roles(){ return $this->belongsToMany(Role::class , 'role_permission'); }}上述邏輯后 POSTMAN 中的示例響應{ "request_time": "2019-09-03 07:54:54", "response_time": "2019-09-03 07:54:54", "status": "success", "message": "Permision Successfully added", "data": [ { "id": 1, "name": "Create Post", "slug": "craete-post", "description": "mnmnmn" }, { "id": 3, "name": "delete User", "slug": "del-user", "description": "mnmnmn" }, { "id": 5, "name": "Create User", "slug": "create-user", "description": "mnmnmn" } ]}
1 回答

慕村225694
TA貢獻1880條經驗 獲得超4個贊
嘗試改變:
$permissions = Permission::select('id' , 'name', 'slug', 'description')->get()->toArray();
進入:
$permissions = Permission::select('id' , 'name', 'slug', 'description')->with('roles')->get()->toArray();
$mappedPermissions = array_map(function ($permission) {
$permission['role_id'] = data_get($permission, '0.pivot.role_id');
unset($permission['roles']);
return $permission;
}, $permissions);
// Then use the $mappedPermissions from here on.
- 1 回答
- 0 關注
- 136 瀏覽
添加回答
舉報
0/150
提交
取消