You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel使用Eloquent::get()查询返回模型而非原始数据问题排查

问题原因说明

这不是异常错误,是Laravel Eloquent ORM的默认设计:

  • Eloquent的get()查询方法默认返回Illuminate\Database\Eloquent\Collection集合对象,集合内的每个元素都是对应表的模型实例,目的是方便你后续调用模型的关联、访问器、修改器等扩展功能。
  • 你在tinker里查询返回模型、迁移后结果不变都是正常表现,和数据库本身没有关系。
解决方案

根据你的使用场景可以选择以下任意一种方法:

1. 保留Eloquent能力,仅获取原始数据

如果后续还有使用模型功能的需求,读取字段时直接访问模型属性即可,比如Blade模板内遍历输出:

@foreach($products as $product)
    <div>
        商品名称:{{ $product->Product_name }}
        商品价格:{{ $product->Product_price }}
    </div>
@endforeach

如果需要直接得到数组格式的全量原始数据,在查询后追加toArray()方法即可:

$products = Product::get()->toArray();

2. 不需要Eloquent能力,直接查原始数据

如果你完全不需要用到模型的扩展功能,可以直接用查询构造器查询,返回的是stdClass对象组成的集合,更贴近原始数据:

// 返回stdClass对象集合
$products = \DB::table('products')->get();

// 追加toArray()可转为纯数组
$products = \DB::table('products')->get()->toArray();

内容的提问来源于stack exchange,提问作者Nemoko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 15:36:03