获得Eloquent Model Laravel 5.1的原始属性

Moh*_*mal 12 php laravel laravel-5 laravel-5.1

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

Bow*_*wer 24

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

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

  • getOriginal() 方法旨在用于获取从数据库加载的属性的原始值。它仅适用于该值不变的情况。如果这个值被修改,它就不会像 OP 预期的那样工作。快速示例:1) 假设 $model 从数据库加载,并且 $model->getOriginal('foo') 的值为“foo”。2)修改属性值:$model->foo = "bar"; 3) $model->getOriginal('foo') 将返回“foo”而不是“bar”。 (3认同)

jed*_*ylo 9

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

$originalFoo = $model->getAttributes()['foo'];
Run Code Online (Sandbox Code Playgroud)


Ali*_*lon 8

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

$mode->getRawOriginal('attribute')
Run Code Online (Sandbox Code Playgroud)

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

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


Dew*_*159 7

我使用的是5.3,我使用它 $model->getOriginal()['foo']

  • 值得注意的是,如果您希望获得特定属性的原始值,您只需将一个键传递给`getOriginal`即可.例如`$ model-> getOriginal('foo')` (9认同)

小智 7

分别为 Laravel 7 和 Symfony 5

$model->getRawOriginal()
Run Code Online (Sandbox Code Playgroud)

getOriginal 方法

影响的可能性:低

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


Amm*_*lid 5

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

$model->getOriginal('foo')
Run Code Online (Sandbox Code Playgroud)

学分到@bower