Laravel-data对象转Eloquent模型时能否忽略指定属性?
解决Laravel Data对象插入数据库时忽略指定属性的问题
有几种简单方法可以让你在插入数据库时自动忽略runningTotal属性:
在Laravel Data类中配置全局隐藏属性
直接在你的Data模型类里添加$hidden属性,指定要排除的字段:use Spatie\LaravelData\Data; class MyData extends Data { // 你的其他属性定义 public int $runningTotal; protected $hidden = ['runningTotal']; }这样调用
$myDataCollection->toArray()时,runningTotal会自动被过滤掉,原有的MyEloquentModel::insert()代码不用修改就能正常执行。转换数组时手动排除属性
如果不想全局隐藏这个属性,也可以在转换数组的环节临时排除:$dataArray = $myDataCollection->map(function($item) { return $item->toArray(['except' => ['runningTotal']]); })->toArray(); MyEloquentModel::insert($dataArray);或者用集合的
except()方法直接处理数组:$dataArray = $myDataCollection->map(fn($item) => collect($item->toArray())->except('runningTotal')->toArray())->toArray();重写Data类的toArray方法
如果你需要更定制化的转换逻辑,可以重写Data类的toArray()方法,固定排除runningTotal:public function toArray(): array { $array = parent::toArray(); unset($array['runningTotal']); return $array; }
内容的提问来源于stack exchange,提问作者Offlein
相关产品推荐
相关产品推荐

