通常,Eloquent中的whereIn将字段中的值与带选项的数组进行比较。我想反过来并将选项与该字段中的多个选项进行比较:
字段包含' option1,option2,option3'
Model::whereIn('field', 'option1')->get();
这可能吗?
答案 0 :(得分:1)
您可以使用LIKE
:
Model::where('field', 'LIKE', '%option1%')->get();
有关语法的文档,请访问:http://dev.mysql.com/doc/refman/5.7/en/pattern-matching.html
如果你总是在最后一个选择之后添加一个逗号,
,比如option1,option2,option3,
你可以使用一些更强大的过滤器:
Model::where('field', 'LIKE', '%option1,%')->get();
开头的逗号(或任何其他分隔符,如果重要)会使它更好:
Model::where('field', 'LIKE', '%,option1,%')->get();
否则,如果您的某个选项与最后一个选项相似(如果您有fish
和goldfish
作为可能类别,则可能会出现问题,使用LIKE ',fish,'
将保证您不匹配goldfish
,而LIKE 'fish,'
则匹配fish
和goldfish
。
我建议您存储类似的类别:/fish/goldfish/water/
然后使用LIKE '%/yourcategory/%'
进行过滤