簡體   English   中英

在Laravel 5.5中提交表單后,如何知道模型是否已更改?

[英]How to know if model has changed after submit a form in Laravel 5.5?

我有一個帶有用戶可以更改其名稱的表單的視圖。 提交表格后,我需要知道名稱是否已更改。 此刻,代碼始終會返回false(無更改),但數據庫表已正確更新。

我的用戶模型具有:

   protected static function hasChanged()
{
    self::updating(function($user){
      if($user->isDirty())
      {
            return true;
      }else
      {
          return false;
      }

    });
}

我的ProfileController接收了表單中的數據。

    public function updateProfile(Request $request)
{
    $usuario = new User;
    User::find(Auth::user()->id)->update($request->all());
    $message = User::hasChanged() ? "Data changed" : "No data changed";
    return redirect('home')->with('success', $message); 
}

盡管用戶已更改表單中的數據,但在$ message中始終獲得“無數據更改”。

我不知道這是否是最好的方法。

謝謝你幫我

設置hasChanged()方法的方式實際上並沒有執行您想要的操作。 當前在您的代碼中,hasChanged()方法正在注冊一個事件處理程序,用於每次調用該對象時進行更新。 這意味着hasChanged()實際上根本不會返回任何東西,但是從長遠來看,它會在代碼中增加很多不必要的開銷。

您需要做的就是將通話分為幾個部分。 你打電話時:

->update($request->all());

那就是將請求中的值放入對象中,然后一次性保存所有內容。 您要做的是將值放入對象中,然后檢查是否有任何更改,然后將其保存到數據庫中。

看起來會更像這樣:

$user = User::find(Auth::user()->id);
$user->fill($request->all());
$message = $user->isDirty() ? "Data changed" : "No data changed";
$user->save();
return redirect('home')->with('success', $message); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM