1
0
Fork 0
This commit is contained in:
Henrik Hautakoski 2021-07-18 17:29:37 +02:00
parent 3179e59daf
commit 70851b5acb
2 changed files with 32 additions and 1 deletions

View file

@ -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

View file

@ -1,9 +1,10 @@
<div>
<div class="grid grid-cols-3 gap-4 mb-2">
<div class="grid grid-cols-4 gap-4 mb-2">
<x-input wire:model="name" name="name" placeholder="Recipe" />
<x-input wire:model="crafter" name="crafter" placeholder="Crafter" />
<x-select wire:model="profession" name="profession" :options="$profession_options" />
<x-select wire:model="specialization" name="specialization" :options="$specialization_options" />
</div>
@if ($recipes->count())