Итак, у меня есть набор продуктов ($this->products
), которые я получаю в результате запроса Model, и я хочу отфильтровать его по некоторым значениям его атрибутов , Проблема в том, что у Laravel нет такого метода, как orWhere
для таких коллекций, как Eloquent для запросов к моделям. Также я хочу использовать подстановочный шаблон LIKE %{$searching_for}%
, и я не уверен, как его использовать (если возможно вообще) для фильтрации моей коллекции.Laravel 5: Альтернатива для метода Eloquent 'orWhere' для запросов к коллекциям
Это код, который я пытался фильтровать свою коллекцию, с которой явно бросает Exception
что orWhere
метод не существует:
$products = $this->products
->where("field1", "LIKE %{$searching_for}%")
->orWhere("field2", "LIKE", "%{$searching_for}%")
->orWhere("field3", "LIKE", "%{$searching_for}%")
->orWhere("field4", "LIKE", "%{$searching_for}%");
Я хотел бы запросить модель напрямую, но я просто хранить $products
коллекции в сеансе, поэтому я могу использовать его везде, где нужно, я не хочу слишком часто запрашивать базу данных, поэтому я ищу решение, которое каким-то образом фильтрует существующую коллекцию.
Да, вам нужно написать этот тип логики самостоятельно. Используйте методы [collection] (https://laravel.com/docs/5.4/collections#available-methods) (вам, вероятно, понадобится '-> filter'), но они не предоставляют полных запросов, подобных SQL , – devk
Вы пробовали '$ this-> products() -> где (...) -> orWhere (...) -> get();'? '$ this-> products' пытается получить доступ к свойству, но' $ this-> products() 'будет пытаться получить доступ к' public function products() {...} '. –