我使用Laravel的賦值函數功能,我有以下的賦值函數:Laravel忽略存取器
public function setFirstNameAttribute($value)
{
$this->attributes['first_name'] = strtolower($value);
}
不過,我需要忽略此賦值函數在某些情況下。 有沒有辦法實現這個
我使用Laravel的賦值函數功能,我有以下的賦值函數:Laravel忽略存取器
public function setFirstNameAttribute($value)
{
$this->attributes['first_name'] = strtolower($value);
}
不過,我需要忽略此賦值函數在某些情況下。 有沒有辦法實現這個
設置一個公共變量模型,如:$ preventAttrSet
public $preventAttrSet = false;
public function setFirstNameAttribute($value) {
if ($this->preventAttrSet) {
// Ignore Mutator
$this->attributes['first_name'] = $value;
} else {
$this->attributes['first_name'] = strtolower($value);
}
}
現在需要根據個人情況
$user = new User;
$user->preventAttrSet = true;
$user->first_name = 'Sally';
echo $user->first_name;
您可以設置該屬性本身:
$model->attributes['first_name'] = 'New First Name With Capitals';
這繞過了存取器。
PS。我必須同意奈傑爾仁所做的評論。如果你並不總是需要mutator,那麼看看你是否可以重新設計你的流程,因爲mutators用於總是改變數據。 –
到忽略賦值函數時,你可以設置公共變量設置爲true而問題的答案提供似乎有效,Laravel有一種方法可以訪問原始值:
$service->getOriginal('amount')
看到這個帖子: Example of getOriginal()
API: API Documentation
如果不總是需要這個功能,當然它應該被移動到需要的地方,並刪除了突變的功能? –