where('name', 'iLIKE', '%' . $params['search'] . '%'); }) ->orderBy($sortColumn, $sortDir) ->paginate($limit); } public function getPermission(array $params = []) { return Permission::orderBy("code")->paginate(1000); } public function create(array $data) { $item = Role::create($data); $item->permissions()->sync($data["permissions"]); $item->save(); return $item; } public function update(Role $item, array $data) { $item->update($data); $item->permissions()->sync($data["permissions"]); $item->save(); return $item; } public function delete(Role $item) { $item->delete(); } public function findBy($column, $value) { $item = Role::where($column, $value)->firstOrFail(); return $item; } public function findUserByPermission($code) { $roles = Role::whereHas("permissions", function($query) use ($code){ $query->where("code", $code); })->get(); return $roles->flatMap(function($role){ return $role->users; }); } }