public function search($input) { $query = Permission::query(); $columns = Schema::getColumnListing('permissions'); $attributes = array(); foreach ($columns as $attribute) { $attributes[$attribute] = null; if (isset($input[$attribute]) and !empty($input[$attribute])) { $query->where($attribute, $input[$attribute]); $attributes[$attribute] = $input[$attribute]; } } /* ** Filter */ $this->filter($input, $query); /* ** Get count */ $total = $query->count(); /* ** Pagination */ $this->pagination($input, $query); /* ** Order */ $this->order($input, $query); return [$query->get(), $attributes, 'total' => $total]; }
protected function getPermissionsAttribute() { $permissionsUser = $this->permissions(); $permissionsRole = Permission::query()->join('permission_role', 'permissions.id', '=', 'permission_role.permission_id')->join('role_user', 'role_user.role_id', '=', 'permission_role.role_id')->where('role_user.user_id', $this->id)->get()->lists('name')->toBase(); return $permissionsRole->merge($permissionsUser)->unique(); }