![](/img/trans.png)
[英]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.