当我管理需要转换为数组的集合时,我通常使用toArray()
。但我也可以使用all()
。我不知道这两个功能的差异......
有人知道吗?
答案 0 :(得分:11)
如果它是Eloquent模型的集合,模型也将转换为带有 toArray()的数组
$col->toArray();
所有它将返回一个Eloquent模型数组,而不将它们转换为数组。
$col->all();
toArray方法将集合转换为普通的PHP数组。如果集合的值是Eloquent模型,模型也将转换为数组: toArray()
all()返回集合中的项目
/**
* Get all of the items in the collection.
*
* @return array
*/
public function all()
{
return $this->items;
}
toArray()返回集合的项目,如果是Arrayable则将它们转换为数组:
/**
* Get the collection of items as a plain array.
*
* @return array
*/
public function toArray()
{
return array_map(function ($value) {
return $value instanceof Arrayable ? $value->toArray() : $value;
}, $this->items);
}
例如:从数据库中抓取所有用户:
$users = User::all();
然后以各种方式抛弃它们,你会发现不同之处:
dd($users->all());
使用toArray()
dd($users->toArray());