想做一个搜索功能,用多个关键词搜索同一模型的同一字段(例如描述),每个关键词搜索出来一个集合,这些集合可能会有重复内容,我的想法是先将这些集合合并,然后去除重复信息。$search_key_array=explode('',$keyword);//创建一个空集合$collection=collect([]);foreach($search_key_arrayas$value){$products=Product::where('description','like','%'.$value.'%')->get();if($products->isNotEmpty()){$collection->concat($products);}}//剔除重复内容,并重置数字索引$collection=$collection->unique()->values();由于需要一个初始空集合,我用collect()创建,然后用从文档里找到的concat方法把搜索到的集合追加到空集合上,结果我发现,用了这个concat()方法,$conllection没有任何变化。求助大佬看看是哪里的问题?
2 回答
慕神8447489
TA贡献1780条经验 获得超1个赞
仔细看文档,使用collapse方法$collection=collect([[1,2,3],[4,5,6],[7,8,9]]);$collapsed=$collection->collapse();$collapsed->all();
万千封印
TA贡献1891条经验 获得超3个赞
可以用splice:$a=collect([]);$a->splice(0,0,[0=>['k'=>'d'],1=>['k'=>'s']]);$a->splice(2,0,[0=>['k'=>'d2'],1=>['k'=>'s2']]);dd($a);循环的时候,第一个参数需要动态计算$a长度获得。
添加回答
举报
0/150
提交
取消