Laravel 元素后切片集合
Laravel slice collection after an element
所以我有这个模型,它将命名为 Clients
客户有
- id int PK
- 名称 varchar
- phone 整数
- 城市变量
- 活跃的tinyint
我选择这种方式来获取按城市分组的 phone 个号码
return Clients::select('name','phone','city')->selectSub('lpad(phone,1,'0'))->where('active',1)->groupBy('city')->paginate(10);
我想从某个客户端将集合切片为子集合,换句话说,如果我有以下输出:
- 约翰 0123456 巴黎
- 杰克 0255664 蒙特利尔
- 简 0165656 伦敦
- 弗雷德 0164465 多伦多
- 琼 0556494 巴塞罗那
- 皮特 0656897 罗马
我如何继续对这个集合进行切片以获得最后 2 个项目(最后 4 个项目,6 个项目......换句话说来自条目 I select)
我知道 Laravel 有一个用于集合的 slice 方法,但是如何动态地做到这一点?
谢谢。
$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。
所以我有这个模型,它将命名为 Clients 客户有
- id int PK
- 名称 varchar
- phone 整数
- 城市变量
- 活跃的tinyint
我选择这种方式来获取按城市分组的 phone 个号码
return Clients::select('name','phone','city')->selectSub('lpad(phone,1,'0'))->where('active',1)->groupBy('city')->paginate(10);
我想从某个客户端将集合切片为子集合,换句话说,如果我有以下输出:
- 约翰 0123456 巴黎
- 杰克 0255664 蒙特利尔
- 简 0165656 伦敦
- 弗雷德 0164465 多伦多
- 琼 0556494 巴塞罗那
- 皮特 0656897 罗马
我如何继续对这个集合进行切片以获得最后 2 个项目(最后 4 个项目,6 个项目......换句话说来自条目 I select) 我知道 Laravel 有一个用于集合的 slice 方法,但是如何动态地做到这一点? 谢谢。
$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。