Workflow
Filter Dynamic

This example uses Dynamic Filter in combination with WireUI.

ID
Dish
Category
1
Arkansas Possum Pie
Pie
2
Albacore Tuna Melt
Soup
3
Π±ΠΎΡ€Ρ‰
Soup
4
Bacalhau com natas
Garnish
5
Baba Ghanoush
Soup
6
Bacon Cheeseburger
Pasta
7
Baked potato
Dessert
8
Baklava
Pasta
9
Bangers and mash
Soup
10
Black Pudding
Meat
Showing 1 to 10 of 192 Results
Disclaimer: Table data is randomly generated for illustrative purposes only. The information here is not a reflection of the actual market and does not constitute business, financial, or medical advice.
πŸ”Ž View on GitHub
<?php

namespace App\Livewire\Examples\FilterDynamicTable;

use App\Models\Dish;
use Illuminate\Database\Eloquent\Builder;
use PowerComponents\LivewirePowerGrid\Column;
use PowerComponents\LivewirePowerGrid\Facades\Filter;

use PowerComponents\LivewirePowerGrid\Facades\PowerGrid;
use PowerComponents\LivewirePowerGrid\PowerGridComponent;
use PowerComponents\LivewirePowerGrid\PowerGridFields;

class FilterDynamicTable extends PowerGridComponent
{
    public string $tableName = 'filter-dynamic-table';

    public function setUp(): array
    {
        return [
            PowerGrid::footer()
                ->showPerPage()
                ->showRecordCount(),
        ];
    }

    public function datasource(): Builder
    {
        return Dish::with(['category', 'kitchen']);
    }

    public function relationSearch(): array
    {
        return [
            'category' => [
                'name',
            ],
        ];
    }

    public function fields(): PowerGridFields
    {
        return PowerGrid::fields()
            ->add('id')
            ->add('name')
            ->add('category_id', fn ($dish) => intval($dish->category_id))
            ->add('category_name', fn ($dish) => e($dish->category->name));
    }

    public function columns(): array
    {
        return [
            Column::make('ID', 'id')
                ->searchable()
                ->sortable(),

            Column::make('Dish', 'name')
                ->searchable()
                ->sortable(),

            Column::make('Category', 'category_name'),
        ];
    }

    public function filters(): array
    {
        return [

            Filter::dynamic('category_name', 'category_id')
                ->component('select')
                ->attributes([
                    'async-data'      => route('category.index'),
                    'option-label'    => 'name',
                    'multiselect'     => false,
                    'option-value'    => 'id',
                    'wire:model.blur' => 'filters.select.category_id',
                    'placeholder'     => 'Select a category',
                ]),
        ];
    }
}