skip($skip)->take($pagination['size']); } final protected function addSortParams(Builder $query, SortFields $sort): Builder { foreach ($sort->all() as $sortField) { $query->orderBy($sortField->name(), $sortField->isAscending() ? 'ASC' : 'DESC'); } return $query; } final protected function addFilterParams(string $class, Builder $query, ?FilterParameters $filters): Builder { if (null === $filters) { return $query; } $config = config(sprintf('firefly.valid_query_filters.%s', $class)) ?? []; if (count($filters->all()) === 0) { return $query; } $query->where(function (Builder $q) use ($config, $filters) { foreach ($filters->all() as $filter) { if (in_array($filter->key(), $config, true)) { foreach($filter->value() as $value) { $q->where($filter->key(), 'LIKE', sprintf('%%%s%%', $value)); } } } }); return $query; } }