Laravel提供了一个方便且好用的方式包装资料,并提供一系列方法处理资料,方便你在处理业务逻辑的同时清楚描述你的程序在做什麽。
他实作了以下介面使得它具有更多的功能性,包含
ArrayAccess
Countable
IteratorAggregate
JsonSerializable
Arrayable
Jsonable
以下会整理一些我在官方文件上看到Collection使用方法及我可能会常使用的method。
$collection = collect([1, 2, 3]);
$collection = Collection::make([1, 2, 3]);
$collection = new Collect([1, 2, 3]);
我们可以利用macro方法,透过closure去达成延展功能。这例子是帮它添加一个toUpper方法
Collection::macro('toUpper', function () {
return $this->map(function ($value) {
return Str::upper($value);
});
});
$collection = collect(['first', 'second']);
$upper = $collection->toUpper();
他提供非常多的方法,我这边简单整理一些我在实务中有用过的一些方法
only可以将你的Collection筛选出你想要的key
$collection = collect([
'product_id' => 1,
'name' => 'Desk',
'price' => 100,
'discount' => false
]);
$filtered = $collection->only(['product_id', 'name']);
$filtered->all();
// ['product_id' => 1, 'name' => 'Desk']
$collection = collect(['taylor', 'abigail', null])->map(function ($name) {
return strtoupper($name);
});
$collection = collect([1, 2, 3, 4]);
$filtered = $collection->filter(function ($value, $key) {
return $value > 2;
});
$filtered->all();
等等,还有很多可以摸索的功能,我也没有全部都用过,等到之後有需求时,再来翻翻。
再来我要介绍的是另一个Eloquent collection,Eloquent方法中回传的是Illuminate\Database\Eloquent\Collection类的实例,他也继承了基础的collection,所以可以使用基础collection的方法。
$names = User::all()->reject(function ($user) {
return $user->active === false;
})->map(function ($user) {
return $user->name;
});
不过有一点要注意的是绝大多数的方法在Eloquent collection中回传是Eloquent collection,但有些方法他回传的会是base collection,包括以下。
好~今天就看到这边,明天再来看看其他有趣的功能吧!
<<: Day22 - 使用 Flex Message 提升用户体验
整个画面中最先看到的是 header 的 nav bar ,就让我们从这里开始刻吧! 首先在 App...
正文 今天要安装的是一套Grafana LAB出产、针对Logging的解决方案Grafana Lo...
BEM B: Block(区块) E: Element(元素) __ 双下底线 M: Modifir...
Sequencer这项功能是针对随机的参数, 譬如说像是Session cookie或是Token进...
正文 今天要来装GitOPs的工具之一,ArgoCD 透过helm来安装 helm repo add...