How to Make Multiple Select Filters Combine with 'And' Logic Instead of 'Or' Logic in FilamentPHP?

When I select multiple options from a single Select Filter, it treats them as an orWhere, which is expected. However, when I select options simultaneously from two or more Select Filters, it also treats them as orWhere. However, I need them to be treated as andWhere. How can I achieve this behavior?

Here are two examples of the filters:
SelectFilter::make('type_id')
    ->label('Type')
    ->query(function (Builder $query, array $data): Builder {
        $values = $data['values'];
        foreach ($values as $value) {
            $query = $query->orWhere('types.type_id', $value);
        }
        return $query;
    })
    ->options(Type::all()->pluck('type_name', 'type_id'))
    ->multiple(),
SelectFilter::make('category_id')
    ->label('Category')
    ->query(function (Builder $query, array $data): Builder {
        $values = $data['values'];

        foreach ($values as $value) {
            $query->orWhere('categories.category_id', $value);
        }

        return $query;
    })
    ->options(Category::all()->pluck('category_name', 'category_id'))
    ->multiple();
Was this page helpful?