2016-02-08 15 views
0

如果我打開一個窗體來編輯和沒有改變任何值只需點擊提交按鈕來更新,它更新表中的行,即它更改updated_at時間,甚至執行一些代碼bootXXXX(static::saving(function($model) {})功能。laravel更新不應該做任何事情,如果沒有值改變

我不希望發生這種情況。

我怎麼找到如果用戶沒有改變,它的空白提交按鈕命中?

當然,在更新之前,我可以獲取當前值並將它們與輸入$request->all()進行比較並決定是否更新,但有沒有更好的方法來實現這種laravel方式?

感謝, ķ

+0

有沒有辦法找出誰投下了這個問題。如果你有理由,你應該只被允許投票。看到沒有理由的投票是非常令人沮喪的。 – karmendra

回答

0

你有2種方法之一是getDirty()使用該改變輸入值,你會得到電流,另一個是getOriginal()如果你使用,你會得到你有什麼以前的數據

通過使用這兩種方法,我在這裏舉一個例子,可能會幫助你

static::saving(function($model) 
{ 
foreach($model->getDirty() as $attribute => $value){ 
    $original= $model->getOriginal($attribute); 
    echo "Changed $attribute from '$original' to '$value'<br/>\r\n"; 
} 
return true; //if false the model wont save! 
});