malzariey / filament-daterangepicker-filter

MIT License
97 stars 43 forks source link

allow us to modify the query using ->query() #6

Closed Saifallak closed 1 year ago

Saifallak commented 1 year ago

use case for that, i want to filter by relation ship, so using it like

            ->filters([
                DateRangeFilter::make('doc_date')
                    ->label(__('admin.doc_date'))
                    ->query(function ($data, $query) {
                        $dates = explode(' ', $data['doc_date']);
                        if (count($dates) == 3) {
                            $from = $dates[0];
                            $to = $dates[2];
                        } else {
                            $from = null;
                            $to = null;
                        }
                        return $query
                            ->when(
                                $from !== null && $to !== null,
                                fn(Builder $query, $date): Builder => $query->whereHas('session_entry', fn($q) => $q->whereBetween('doc_date', [
                                    Carbon::createFromFormat('d/m/Y', $from)->startOfDay(),
                                    Carbon::createFromFormat('d/m/Y', $to)->endOfDay(),
                                ])),
                            );
                    })
                    ->withIndicater(),

])
Saifallak commented 1 year ago

to use it while being reviewed and not merged yet use


    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/Saifallak/filament-daterangepicker-filter.git"
        }
    ],
in composer.json

and

"malzariey/filament-daterangepicker-filter": "*"