WIP
This commit is contained in:
parent
3179e59daf
commit
70851b5acb
2 changed files with 32 additions and 1 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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())
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue