![](/img/trans.png)
[英]How to know if model has changed after submit a form in Laravel 5.5?
[英]Check if an attribute has changed in Laravel 5.5 model events
我已經看到有一個名為wasChanged()
的函數,您可以在其中檢查屬性是否在更新時更改。 不是臟,而是被改變和堅持
但是我試圖在我的模型事件啟動函數中檢查這個:
public static function boot()
{
parent::boot();
self::updated(function($appointment){
if($appointment->wasChanged('appointment_date')) {
// do something
}
});
}
這對我永遠不起作用。 有什么想法可以檢查這個嗎?
isDirty 函數具有不同的行為,因為它用於檢查請求中是否提交了屬性。
經過一番搜索,我發現有一個名為getOriginal()
的有用函數,它返回原始屬性值的數組。
所以我只需要訪問我的屬性並進行比較:
$original_date = $appointment->getOriginal()['appointment_date'];
if($appointment->appointment_date != $original_date) {
...
}
盡管這篇文章很舊,但我會插入我的答案,因為您嘗試解決此問題的最初方法是最正確的方法。 在使用引導方法之前,您一定弄錯了。 我一直在使用它,但我沒有看到錯誤的原因。 下面的代碼繼續工作。 並且剛剛在 2021 年完成了對 laravel 5、7 和 8 的測試。
protected static function boot()
{
parent::boot();
self::updated(function ($user) {
if($user->wasChanged('password')){
$user->notify(new PasswordChanged($user));
}
});
}
下面的代碼在 2021 年更新和測試,非常適合 laravel 7 和 8。
protected static function booted()
{
self::updated(function ($user) {
if($user->wasChanged('password')){
$user->notify(new PasswordChanged($user));
}
});
}
我把效果很好的兩個形狀。 如果你有類似上面的問題,那么問題很可能超出了這個范圍。
你可以檢查 save() 方法是否返回 true:
$object = new Model;
$object->attribute = $value;
if($object->save(){
// attribute changed
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.