From ce794f40ff48a28bd0eb6fd7b4ef2e4f97e131a7 Mon Sep 17 00:00:00 2001 From: paranarimasu <33796518+paranarimasu@users.noreply.github.com> Date: Mon, 12 Jun 2023 21:54:06 -0500 Subject: [PATCH] fix(api): load aggregate fields for search builder (#587) --- app/Scout/Elasticsearch/Elasticsearch.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/Scout/Elasticsearch/Elasticsearch.php b/app/Scout/Elasticsearch/Elasticsearch.php index 6b3a73973..1aa16e74c 100644 --- a/app/Scout/Elasticsearch/Elasticsearch.php +++ b/app/Scout/Elasticsearch/Elasticsearch.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace App\Scout\Elasticsearch; +use App\Concerns\Actions\Http\Api\AggregatesFields; use App\Concerns\Actions\Http\Api\ConstrainsEagerLoads; use App\Enums\Http\Api\Paging\PaginationStrategy; use App\Http\Api\Query\Query; @@ -19,6 +20,7 @@ use Elastic\ScoutDriverPlus\Builders\BoolQueryBuilder; use Elastic\ScoutDriverPlus\Exceptions\QueryBuilderValidationException; use Exception; use Illuminate\Contracts\Pagination\Paginator; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Support\Collection; use Illuminate\Support\Facades\Log; use Illuminate\Support\Str; @@ -28,6 +30,7 @@ use Illuminate\Support\Str; */ class Elasticsearch extends Search { + use AggregatesFields; use ConstrainsEagerLoads; /** @@ -93,6 +96,11 @@ class Elasticsearch extends Search // initialize builder for matches $builder = $elasticQuery->build($query->getSearchCriteria()); + // load aggregate fields + $builder->refineModels(function (Builder $searchModelBuilder) use ($query, $schema) { + $this->withAggregates($searchModelBuilder, $query, $schema); + }); + // eager load relations with constraints $builder = $builder->load($this->constrainEagerLoads($query, $schema));