Результаты предварительной фильтрации Laravel Scout. Встроенный где () недостаточно развит
У меня есть модель заказа, и я хочу иметь возможность создать два поиска.
- Тот, который ищет только неполные заказы.
- Тот, который ищет только завершенные заказы.
Я ожидал, что это будет просто, но, похоже, нет!
В моей таблице заказов у меня есть поле complete_at, в котором указана дата завершения, или ноль, если нет. Встроенный
Order::Search->where()
Метод не позволяет вам предоставить компаратор, а также не принимает ноль... так что это не работает!Мне было интересно создать несколько индексов для модели, а затем
->within('open_orders')
Функция для поиска правильного. Кажется, что это может обеспечить большую гибкость, но я также не вижу способа достичь этого.
Как-то так в модели было бы здорово (но это не работает)
public function searchableAs()
{
if($this->isOpen()){
return 'open_orders_index';
} else {
return 'complete_orders_index';
}
}
Может кто-нибудь предложить какие-либо обходные пути для предварительной фильтрации поискового запроса?