簡體   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