2016-12-19 6 views
0

일반적으로 Eloquent의 whereIn은 필드 값을 옵션이있는 배열과 비교합니다. 그 역 현장에서 여러 옵션에 대한 옵션을 비교하고자 :Laravel WhereIn 필드 자체에 여러 옵션이있는 경우

필드 '옵션 1, 옵션 2, 옵션 3'이게 가능

Model::whereIn('field', 'option1')->get(); 

을 포함?

+0

LIKE '%/yourcategory/%'를 사용하여 필터링 여러 값으로. – AntoineB

+0

알지만, 범주를 기반으로 항목을 표시하는 것은 매우 간단한 방법입니다. 나는 이것을 위해 데이터베이스 설계를 지나치게 복잡하게 만들고 싶지 않다. – klaaz

+0

글쎄, 당신이 당신의 자신의 문제를 기반으로 볼 수 있듯이, 그것은 좋은 해결책이 아닙니다. – AntoineB

답변

1

당신은 당신의 쿼리 LIKE를 사용하여 만들 수 있습니다 구문에 대한

Model::where('field', 'LIKE', '%option1%')->get(); 

문서가 여기에 있습니다 : 당신은 항상 option1,option2,option3,처럼, 심지어 마지막 선택 후 쉼표 ,를 추가하는 경우 http://dev.mysql.com/doc/refman/5.7/en/pattern-matching.html

당신은 사용할 수 있습니다 약간의 견고한 필터 :

Model::where('field', 'LIKE', '%option1,%')->get(); 

시작 부분에 쉼표 그 중요한 경우 다른 분리기)는 더 나은 만들 것 : 귀하의 옵션 중 하나가 끝에 또 다른 하나와 유사한 경우 가능한 범주로 fishgoldfish이있는 경우

Model::where('field', 'LIKE', '%,option1,%')->get(); 

그렇지 않으면 당신은 (문제가있을 수 LIKE ',fish,'를 사용하여 은 fishgoldfish과 일치하는 반면 goldfish과 일치하지 않을 것입니다.

내가 그런 당신의 카테고리를 저장하는 것이 좋습니다 것 : /fish/goldfish/water/를 한 다음, 데이터베이스 설계를 변경하는 것이 좋습니다 여러 값을 측정해야 할 필요가있는 경우에는 관계가 아닌 필드 전용 테이블을 할 수 있습니다

+0

옵션이 동일한 문자로 시작될 때 '충분'하지는 않습니다.하지만 감사합니다. – klaaz

+0

마지막 부분을 참조하십시오. 그러면 문제에 대해 더 강력하게 만들 수 있습니다. – AntoineB

+0

좋아, 네 대답은 '자라나는'것을 알 수있다. 나는 슬래시가있는 솔루션을 가장 좋아합니다. – klaaz