모델 쿼리 결과로 얻은 제품 모음 ($this->products
)이 있는데 그 중 일부 속성 값으로 필터링하려고합니다. . 문제는 Laravel에 Eloquent와 같은 콜렉션에 대해 orWhere
과 같은 메소드가 없기 때문에 모델을 쿼리하는 것입니다. 또한 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() {...}'메소드에 접근하려 할 것입니다. –