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

Laravel 如何从Session存储的Sample_table模型实例获取original数组值

读取Eloquent实例original数组的实现方案

你在调试输出中看到的带#前缀的original属性,是Eloquent模型定义的protected受保护属性,外部无法通过$实例->original的语法直接读取,直接调用会触发访问权限错误。
Laravel 已在Eloquent模型中内置公开方法,专门用于读取该受保护属性,无需修改模型代码或通过反射绕过权限限制。

具体操作代码

结合你当前从Session取模型的逻辑,直接调用内置方法即可:

// 与你现有调试逻辑保持一致,取出对应的Sample_table模型实例
$sampleModel = Session::get('sample')[0];

// 1. 获取完整的original数组,返回内容与你dd看到的#original数组完全一致
$originalAll = $sampleModel->getOriginal();

// 2. 仅需要取original数组中指定字段值时,可直接传入字段名
$fieldValue = $sampleModel->getOriginal('firstName');

// 3. 支持传入默认值,应对字段不存在的场景
$defaultValue = $sampleModel->getOriginal('不存在的字段', '自定义默认值');

注意事项

  • getOriginal()返回的是模型从数据库首次加载时的原始属性值,后续对模型属性的修改不会改变该方法的返回结果,与动态读取属性($model->属性名)的逻辑有本质区别
  • 不推荐使用反射等手段直接读取protected的original属性,属于破坏模型封装的写法,后续Laravel版本调整内部结构时易出现兼容问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.29 07:27:02