laravel好用的collection方法

胡志
2023-12-01

一.背景:
业务开发对二维数组频繁操作,故总结一下好用的collection方法。
原本数据结构:

Illuminate\Database\Eloquent\Collection {#2988
     all: [
       App\Model\NotifyModel {#3009
         notify_id: 1,
         user_id: 1,
         costomer_id: 3,
         is_read: 0,
       },
       App\Model\NotifyModel {#3011
         notify_id: 2,
         user_id: 3,
         costomer_id: 546,
         is_read: 0,
       },
       App\Model\NotifyModel {#3001
         notify_id: 3,
         user_id: 4,
         costomer_id: 5,
         is_read: 0,
       },
     ],
   }

1.pluck 方法可以获取集合中指定键对应的所有值:
可以单独取出某一列,如user_id
结果:Illuminate\Database\Eloquent\Collection {#3000
all: [
1 => 1,
3 => 3,
4 => 4,
],
}

2.keyBy 方法以指定的键作为集合的键。如果多个集合项具有相同的键,则只有最后一个集合项会显示在新集合中。
可以取出以user_id的关联数据
结果:
Illuminate\Database\Eloquent\Collection {#2981
all: [
1 => App\Model\NotifyModel {#3009
notify_id: 1,
user_id: 1,
costomer_id: 3,
is_read: 0,
},
3 => App\Model\NotifyModel {#3011
notify_id: 2,
user_id: 3,
costomer_id: 546,
is_read: 0,
},
4 => App\Model\NotifyModel {#3001
notify_id: 3,
user_id: 4,
costomer_id: 5,
is_read: 0,
},
],
}
3.mapWithKeys 方法遍历集合并将每个值传入给定的回调函数。该回调函数将返回一个包含单个键 / 值对的关联数组。跟keyBy相比可以制定值为更小的粒度。
4.shuffle 方法随机打乱集合项。
5.max 方法返回指定键的最大值:
$max = collect([[‘foo’ => 10], [‘foo’ => 20]])->max(‘foo’);

// 输出20

$max = collect([1, 2, 3, 4, 5])->max();
//输出5

6.reject 方法使用指定的回调函数过滤集合。如果回调函数返回 true 就会把对应的集合项从集合中移除:

 类似资料: