orderBy($sortColumn, $sortDir) ->when($search, function ($query) use ($search){ $query->where(function($query) use ($search){ $query->where("name","ilike","%$search%"); $query->orWhere("code","ilike","%$search%"); }); }) ->when(@$params["filter"], function ($query) use ($params) { foreach ($params["filter"] as $filter) { $query->where($filter["column"], $filter["query"]); } }) ->paginate($limit); } public function create($params){ $params["password"] = "-"; $model = Role::create($params); if (@$params["permissions"]){ $model->permissions()->sync($params["permissions"]); } return $model; } public function update($model, $params){ $model->update($params); if (@$params["permissions"]){ $model->permissions()->sync($params["permissions"]); } foreach($model->users as $user){ $user->forgetPermission(); } return $model; } public function delete($model){ foreach($model->users as $user){ $user->forgetPermission(); } $model->delete(); } }