public static function getFeaturePermissions($role_id) { // $result = []; $features = Role::find($role_id)->features()->wherePivot('deleted_at', null)->get(); foreach ($features as $feature) { $permissions = []; //$permissions = Role::find($role_id)->permissions()->where('feature_id', $feature->id)->get(); $feature_permissions = Permission::where('feature_id', $feature->id)->get(); foreach ($feature_permissions as $fp) { //get the role for this feature, check whether is ther any pivot exist. //$roles = $fp->roles()->where('role_id', $role_id)->get(); //not using the pivot... $pivot = PermissionRole::whereNull('deleted_at')->where('role_id', $role_id)->where('permission_id', $fp->id)->first(); $checked = count($pivot) > 0 ? true : false; $permissions[] = ['id' => $fp->id, 'feature_id' => $fp->feature_id, 'name' => $fp->name, 'descr' => $fp->descr, 'module' => $fp->module, 'position' => $fp->position, 'url' => $fp->url, 'icon' => $fp->icon, 'icon_bg' => $fp->icon_bg, 'prompt_type' => $fp->prompt_type, 'prompt_title' => $fp->prompt_title, 'prompt_content' => $fp->prompt_content, 'checked' => $checked]; } $result[] = ['feature' => $feature->toArray(), 'permissions' => $permissions]; } // get result ... return $result; }