collection 实例(非 ORM 实例)可不可以用 where 方法利用 ‘like’ 模糊查询
事情是这样的,现在我将一个数组转成Collection实例(Illuminate\Support\Collection
)
$newData = collect($data); //数组变成集合
like查询的两种方式:
$newData = $newData->where('name','like',$dutyName); //全名查询
$newData = $newData->where('name','like','%' . $dutyName . '%'); //模糊查询
结果:
模糊查询返回的数据为空
全名查询可以正常查询出数据
纠结了好长时间,最后得出结论:模糊查询的‘%’可能有问题
//$dutyName是全名的情况下运行下面两行代码:
$newData = $newData->where('name','like',$dutyName); //可以正常输出数据
$newData = $newData->where('name','like','%' . '$dutyName'); //输出数据为空
很奇怪哎....想问一下如何解决这个问题?
补充:
文档中写到:默认情况下, Eloquent查询的结果返回的内容都是 Collection
实例。
集合实例:Illuminate\Support\Collection
Eloquent实例:Illuminate\Database\Eloquent\Collection
难道只能通过Eloquent实例来模糊查询吗?
collection 是不支持 like 查询的
collection where 的源码
当 operator 不支持时,默认为 "=",
Eloquent 实例来模糊查询实际上是数据库的 LIKE 查询