query = $this->query->when($search ?? $this->search, function ($query, $search) { return $query->where('post_title', 'LIKE', "%{$search}%") ->orWhereHas('variants', function (Builder $query) use ($search) { $query->where('variation_title', 'LIKE', "%{$search}%"); }); }); } protected function applyMustLoadIds() { $this->query = $this->query->orWhereIn('ID', $this->includeIds) ->orWhereHas('variants', function (Builder $query) { $query->orWhereIn('id', $this->includeIds); }); } public function tabsMap(): array { return [ 'publish' => 'post_status', 'simple' => 'variation_type', 'simple_variations' => 'variation_type', 'physical' => 'fulfillment_type', 'digital' => 'fulfillment_type', ]; } public function getModel(): string { return Product::class; } public static function getFilterName(): string { return 'product_variation'; } public function applyActiveViewFilter(?string $activeView = null): void { } public static function getTreeFilterOptions(array $args): array { return static::make($args)->get()->map(function ($product) { return [ 'value' => $product->ID, 'label' => $product->post_title, 'children' => $product->variants->map(function ($variation) { return [ 'value' => $variation->id, 'label' => $variation->variation_title, ]; })->toArray() ]; })->toArray(); } }