所以我有这个模型,它将命名客户 客户有
我选择这种方式来获取按城市分组的电话号码
return Clients::select('name','phone','city')->selectSub('lpad(phone,1,'0'))->where('active',1)->groupBy('city')->paginate(10);
我希望将集合切片到某个客户端的子集合,换句话说,如果我有以下输出:
如何进行切片收集以获得最后2个项目(最后4个项目,6个项目......以及我选择的条目中的其他项目) 我知道Laravel有一个切片方法用于收集,但如何动态地做到这一点? 谢谢。
答案 0 :(得分:4)
$records = Clients::select('name','phone','city')->selectSub('lpad(phone,1,'0'))->where('active',1)->groupBy('city')->paginate(10);
假设$ name =" Jane"
$value = collect($records)->filter(function($value) use ($name) {
return $value->name === $name;
})->keys()->first();
这里$ value将保存Jane的索引。
现在你可以通过
实现切片了$records = collect($records)->slice($value, 2)->all();
但是有一个副作用,如果找不到名字,你会得到$ value为null。在处理切片之前检查$ value是否为null。