mapWithKeys(function ( $permission ) { $restrictions = Arr::get($permission, 'restrictions', []); return [ $permission['id'] => [ 'restrictions' => collect($restrictions) ->filter(function ($restriction) { return isset($restriction['value']); }) ->map(function ($restriction) { return [ 'name' => $restriction['name'], 'value' => $restriction['value'], ]; }), ], ]; }); $model->permissions()->sync($permissionIds); } }