推荐直接用 toArray() 方法:单个模型调用 toArray() 即可;集合用 Collection::toArray();取几列优先 pluck()->toArray();勿对原生数组或用 (array) 强转。

推荐直接用模型或集合自带的 toArray() 方法,它专为 Laravel 场景设计,安全、高效、语义清晰。
单个模型实例:直接调用 toArray()
只要模型已从数据库加载(如 find()、first()、create()),属性已在内存中同步,无需 refresh() 或手动构造:
$user = User::find(1); $array = $user->toArray();-
$ticket = Ticket::create([...]); $array = $ticket->toArray();—— create() 后字段已写入模型属性,直接转即可,避免多余 SQL 查询
模型集合:统一用 Collection::toArray()
所有 Eloquent 查询返回的集合(all()、get()、where(...)->get())都继承自 Collection,可直接调用:
修复 Core bailout 状态损坏安全问题,以及 BZ2、DOM、PDO、Opcache/JIT 内存与执行错误,改进 Unicode 字素处理、URL 解析、TLS 流状态、信号分发及会话错误处理。
$users = User::where('active', 1)->get()->toArray();- 支持关联预加载:
User::with('posts')->get()->toArray();,关联数据也会递归转为数组
只取某几列?优先用 pluck() + toArray()
若只需 ID、name 等单一字段值构成纯索引数组(非完整模型结构),跳过模型实例化更省资源:
$ids = User::where('role', 'admin')->pluck('id')->toArray(); // 返回 [1, 5, 8]$names = User::pluck('name', 'id')->toArray(); // 返回 [1 => 'Alice', 5 => 'Bob']
注意绕开常见陷阱
不要对原生 PHP 数组调用 toArray() —— 它不是数组方法;也不要用 (array)$model 强转,会暴露私有属性前缀、忽略 $hidden/$appends 和访问器逻辑:
- 错误:
$models = []; foreach (...) { $models[] = User::find($id); } $models->toArray();→ 报错,$models 是普通数组 - 正确:先用
collect($models)->toArray()包一层,或从源头改用集合查询 - 错误:
(array)$user→ 可能出现["\0User\0id" => 1],且丢失日期格式化、追加属性等
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










