获得Eloquent Model Laravel 5.1的原始属性

时间:2015-12-09 14:20:54

标签: php laravel laravel-5 laravel-5.1

我有Foo属性,在显示之前使用getFooAttribute方法对其进行格式化,但在某些地方,我需要原始属性..所以我该怎么做

8 个答案:

答案 0 :(得分:20)

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

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

答案 1 :(得分:8)

如果你想在大多数代码中使用 mutator 但有时想要访问原始值,你可以通过使用 getAttributes()模型的方法,然后从那里获取值,例如:

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

答案 2 :(得分:6)

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

答案 3 :(得分:4)

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

$model->getOriginal('foo')

@bower的积分

答案 4 :(得分:4)

如果您希望直接将原始字段从数据库中跳过跳过增幅器,那么<​​/ p>

$mode->getRawOriginal('attribute')

是必经之路。 $model->getOriginal()会为您提供mutator值,而不是您想要的原始数据。

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

答案 5 :(得分:1)

Laravel 7和Symfony 5

$model->getRawOriginal()

getOriginal方法

影响的可能性:低

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

答案 6 :(得分:0)

为我工作

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

答案 7 :(得分:-2)

也许值得一提的是Laravel模型类会覆盖__set__get的魔术方法,因此您还可以动态地获取original属性,即{{ 1}}。

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