不要调用 TOARRAY() 从 LARAVEL COLLECTION 中获取所有项目
Laravel 的Collection
类非常棒。你可能在所有 Laravel 项目中都用到了它。
您经常需要将集合强制转换为常规数组。像我一样,您可能想toArray()
这样做。但这可能是错误的调用方法。
在简单的集合上toArray
工作就像预期的那样。
$collection = collect([1, 2, 3]);$collection->toArray(); // returns [1, 2, 3]
但这里有一个例子,它的行为可能与你预期的不一样。让我们尝试调用toArray
一组 Eloquent 模型。
$usersCollection = User::all(); // returns a collection$usersArray = $usersCollection->toArray();ray($usersArray);
让我们看看Ray返回了什么
如你所见,集合中的模型也被转换为数组。这可能是你意想不到的。
要从集合中获取所有元素作为数组,必须调用all()
而不是toArray()
。
$usersCollection = User::all(); // returns a collection$usersArray = $usersCollection->all();ray($usersArray);
在 Ray 中,您现在可以看到,数组包含User
模型的实例