繁体   English   中英

获取原始属性 Eloquent Model Laravel 5.1

[英]get Original Attribute for Eloquent Model Laravel 5.1

我有Foo属性,它使用getFooAttribute方法在显示之前对其进行格式化,但在某些地方,我需要它的原始属性。 那我该怎么做呢?

从 v4.2 开始获取特定属性的原始值:

$originalFoo = $model->getOriginal('foo');

如果您想在大部分代码中使用mutator但有时想要访问原始值,您可以通过使用模型的getAttributes()方法获取所有属性然后从那里获取值来实现,例如:

$originalFoo = $model->getAttributes()['foo'];

如果您希望直接从数据库中获取原始字段跳过 mutator,那么

$mode->getRawOriginal('attribute')

是要走的路。 $model->getOriginal()会给你 mutator 值而不是你想要的原始数据。

https://laravel.com/api/7.x/Illuminate/Database/Eloquent/Concerns/HasAttributes.html#method_getRawOriginal

我正在使用 5.3,为此我使用$model->getOriginal()['foo']

对于 Laravel 5,我们还可以使用:

$model->getOriginal('foo')

归功于@bower

Laravel 7 和 Symfony 5 分别

$model->getRawOriginal()

getOriginal 方法

影响可能性:低

$model->getOriginal()方法现在将尊重模型上定义的任何强制转换和修改器。 以前,此方法返回未转换的原始属性。 如果您想继续检索未转换的原始值,您可以改用getRawOriginal方法。

为我工作

$newProduct = $product[0]->getRawOriginal();

实际上上面看起来都是正确的,只要看看这是否在数组键 [0] 中例如:

$originalFoo = $model[0]->getRawOriginal('foo');

值得一提的是,Laravel 模型类覆盖了__set__get的魔法方法,因此您还可以动态检索original属性,即$model->original

https://github.com/laravel/framework/blob/5.1/src/Illuminate/Database/Eloquent/Model.php

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM