diff --git a/src/Foundation/Search/ProductSearch.php b/src/Foundation/Search/ProductSearch.php index 4c8e8669..f3e7f373 100644 --- a/src/Foundation/Search/ProductSearch.php +++ b/src/Foundation/Search/ProductSearch.php @@ -26,6 +26,7 @@ use Vanilo\Channel\Contracts\Channel; use Vanilo\MasterProduct\Contracts\MasterProduct; use Vanilo\MasterProduct\Models\MasterProductProxy; +use Vanilo\MasterProduct\Models\MasterProductVariantProxy; use Vanilo\Product\Contracts\Product; use Vanilo\Product\Models\ProductProxy; use Vanilo\Product\Models\ProductStateProxy; @@ -42,6 +43,8 @@ class ProductSearch protected Builder $masterProductQuery; + protected ?Builder $variantQuery = null; + protected ?string $orderBy = null; public function __construct() @@ -86,6 +89,10 @@ public function withinTaxon(Taxon $taxon): self $query->where('id', $taxon->id); }); + if (null !== $this->variantQuery) { + + } + return $this; } @@ -152,6 +159,7 @@ public function nameContains(string $term): self { $this->productQuery->where('name', 'like', "%$term%"); $this->masterProductQuery->where('name', 'like', "%$term%"); + $this->variantQuery?->where('name', 'like', "%$term%"); return $this; } @@ -333,7 +341,8 @@ public function getSearcher(string|array $columns = null): Searcher return $this->searcher ->add($this->productQuery, $columns, $orderBy) - ->add($this->masterProductQuery, $columns, $orderBy); + ->add($this->masterProductQuery, $columns, $orderBy) + ->when(null !== $this->variantQuery, fn($search) => $search->add($this->variantQuery)); } public function simplePaginate(int $perPage = 15, array $columns = ['*'], string $pageName = 'page', int $page = null): Paginator @@ -354,6 +363,8 @@ public function getResults(int $limit = null): Collection public function includeVariants(): self { + $this->variantQuery = MasterProductVariantProxy::query(); + return $this; } }