[英]Get instance of Eloquent model from generic DB query in 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 值而不是你想要的原始数据。
我正在使用 5.3,为此我使用$model->getOriginal()['foo']
对于 Laravel 5,我们还可以使用:
$model->getOriginal('foo')
归功于@bower
$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.