Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

azim1728's avatar

create custom filter to filter multiple columns

Can you please help me with creating a custom filter? I wants to filter multiple date columns using orWhereDate in a single filter. I tried by myown but it seems filtering only first condition. Below is my code. Thanks in advance.

namespace App\Nova\Filters;

use Illuminate\Support\Carbon;
use Laravel\Nova\Filters\DateFilter;
use Laravel\Nova\Http\Requests\NovaRequest;

class TodayTasksFilter extends DateFilter
{
    /**
     * Apply the filter to the given query.
     *
     * @param  \Laravel\Nova\Http\Requests\NovaRequest  $request
     * @param  \Illuminate\Database\Eloquent\Builder  $query
     * @param  mixed  $value
     * @return \Illuminate\Database\Eloquent\Builder
     */
    public function apply(NovaRequest $request, $query, $value)
    {
        $value = Carbon::parse($value);

        return $query->whereDate('pickup_date',$value)->orWhereDate('delivery_date',$value);
    }
}
0 likes
3 replies
Sinnbeck's avatar
Sinnbeck
Best Answer
Level 102

When using orWhere always scope your query

namespace App\Nova\Filters;

use Illuminate\Support\Carbon;
use Laravel\Nova\Filters\DateFilter;
use Laravel\Nova\Http\Requests\NovaRequest;

class TodayTasksFilter extends DateFilter
{
    /**
     * Apply the filter to the given query.
     *
     * @param  \Laravel\Nova\Http\Requests\NovaRequest  $request
     * @param  \Illuminate\Database\Eloquent\Builder  $query
     * @param  mixed  $value
     * @return \Illuminate\Database\Eloquent\Builder
     */
    public function apply(NovaRequest $request, $query, $value)
    {
        $value = Carbon::parse($value);

        return $query->where(fn($query) => $query->whereDate('pickup_date',$value)->orWhereDate('delivery_date',$value));
    }
}
1 like
azim1728's avatar

@Sinnbeck thanks buddy but it's not working for me first it was returning the data for the first condition but now it returns no data. I think the issue is with my index query as when I remove the conditions there it works but I need those condition to be set on indexQuery as well of my resource.

 public static function indexQuery(NovaRequest $request, $query)
    {
        return $query->where(fn($query) => $query->whereDate('pickup_date', Carbon::today())->orWhereDate('delivery_date',Carbon::today()));

    }
azim1728's avatar

Thanks I solved it by adding scope in the model.

Please or to participate in this conversation.