Laravel 5中all()和toArray()之间的区别

时间:2017-04-07 21:50:43

标签: arrays laravel collections

当我管理需要转换为数组的集合时,我通常使用toArray()。但我也可以使用all()。我不知道这两个功能的差异......

有人知道吗?

1 个答案:

答案 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());