From 70851b5acb570459dcfc9c5abfdde43f49389fc6 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sun, 18 Jul 2021 17:29:37 +0200 Subject: [PATCH] WIP --- app/Http/Livewire/Recipes.php | 30 ++++++++++++++++++++++ resources/views/livewire/recipes.blade.php | 3 ++- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/app/Http/Livewire/Recipes.php b/app/Http/Livewire/Recipes.php index 9cad6a7..1d171c3 100644 --- a/app/Http/Livewire/Recipes.php +++ b/app/Http/Livewire/Recipes.php @@ -3,6 +3,7 @@ namespace App\Http\Livewire; use App\Models\Profession; +use App\Models\CharacterProfession; use App\Models\Recipe; use Illuminate\Support\Facades\DB; @@ -29,6 +30,13 @@ class Recipes extends Component */ public string $profession = ''; + /** + * Filter by profession specialization. + */ + public string $specialization = ''; + + public array $specialization_options = []; + /** * Filter by crafter */ @@ -51,6 +59,22 @@ class Recipes extends Component ->toArray(); } + public function updatedProfession($value) + { + $options = CharacterProfession::query() + ->with(['profession', 'specialization']) + ->whereHas('profession', function ($q) use ($value) { + $q->where('name', $value); + }) + ->get() + ->pluck('specialization.name', 'specialization.slug') + ->unique(); + + $this->specialization_options = collect(['' => '-- All --']) + ->merge($options) + ->toArray(); + } + public function render() { $query = Recipe::select('recipes.*') @@ -74,6 +98,12 @@ class Recipes extends Component $query->whereHas('profession', function ($q) { $q->where('name', Str::ucfirst($this->profession)); }); + + if (strlen($this->specialization)) { + $query->whereHas('crafters.professions.specialization', function ($q) { + $q->where('slug', $this->specialization); + }); + } } // Filter by crafter diff --git a/resources/views/livewire/recipes.blade.php b/resources/views/livewire/recipes.blade.php index 6349be4..07d6c0f 100644 --- a/resources/views/livewire/recipes.blade.php +++ b/resources/views/livewire/recipes.blade.php @@ -1,9 +1,10 @@
-
+
+
@if ($recipes->count())