/**
* @param PaginationParameters $paginationParameters
* @param FilterParameters $filterParameters
* @param SortParameters $sortParameters
* @param array $with
* @return array
*/
public function paginated(PaginationParameters $paginationParameters, FilterParameters $filterParameters = null, SortParameters $sortParameters = null, $with = [])
{
$query = $this->model->query();
$query->with($with);
if ($filterParameters) {
$this->buildFilters($filterParameters, $query);
}
if ($sortParameters) {
$this->buildSorting($sortParameters, $query);
}
$total = $query->count();
$this->buildPagination($paginationParameters, $query);
return $this->paginate($paginationParameters, $query->get(), $total);
}