Laravel WhereIn在字段中有多个选项

时间:2016-12-19 13:12:45

标签: eloquent laravel-5.3 mutators

通常,Eloquent中的whereIn将字段中的值与带选项的数组进行比较。我想反过来并将选项与该字段中的多个选项进行比较:

字段包含' option1,option2,option3'

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

这可能吗?

1 个答案:

答案 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();

否则,如果您的某个选项与最后一个选项相似(如果您有fishgoldfish作为可能类别,则可能会出现问题,使用LIKE ',fish,'将保证您不匹配goldfish,而LIKE 'fish,'则匹配fishgoldfish

我建议您存储类似的类别:/fish/goldfish/water/然后使用LIKE '%/yourcategory/%'进行过滤