我是 PHP 和 Laravel 的新手。我學到了很多東西,但是我在看到我的錯誤應該是一個簡單的任務時遇到了問題。
我有一個由 MySQL 資料庫中的資料填充的表單。當我提交它時,它會創建一個新記錄而不是更新現有記錄。是我正在使用的表單操作:
<form action="{{route('updateAlert', $alert->id)}}" method="post" name="saveAlert" id="saveAlert" class="needs-validation"
@csrf
@method("PUT")
///form fields here
</form>
這是兩條相關的路線。editAlert 帶您進入上面的表單。updateAlert 應該將您帶到我的 AlertController 上的更新方法。
Route::get('/alerts/edit/{id}', 'AlertController@edit')->name('editAlert');
Route::put('/alerts/edit/{id}', 'AlertController@update')->name('updateAlert');
這是我的 AlertController 的樣子:
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function update(Request $request, Alert $alert)
{
$alert->type = $request->type;
$alert->title = $request->title;
$alert->body = $request->body;
$alert->link = $request->link;
$alert->eff_dt = Carbon::parse($request->eff_dt);
$alert->exp_dt = Carbon::parse($request->exp_dt);
$alert->note = $request->note;
$alert->user_id = auth()->user()->id;
$alert->save();
return redirect()->route('viewAlerts')->with('success', 'Your alert has been updated.');
}
我錯過了什么?我在應用程式的另一部分有相同的基本代碼,它按預期作業。提前致謝。
uj5u.com熱心網友回復:
您沒有獲取您的行 ID。您需要使用模型并將您的 id 傳遞給您的模型以更新任何特定行。
前任。我的模型名稱只是傳遞您的模型名稱。
public function update(Request $request, Alert $alert)
{
$alert = ModelName::find($alert);
$alert->type = $request->type;
$alert->title = $request->title;
$alert->body = $request->body;
$alert->link = $request->link;
$alert->eff_dt = Carbon::parse($request->eff_dt);
$alert->exp_dt = Carbon::parse($request->exp_dt);
$alert->note = $request->note;
$alert->user_id = auth()->user()->id;
$alert->save();
return redirect()->route('viewAlerts')->with('success', 'Your alert has been updated.');
}
uj5u.com熱心網友回復:
要在 Laravel 中更新內容,您需要一個查詢構建器物件;Alert $alert 回傳模型的一個物件,因此它不能用于更新事物。
注意:find 方法是一種特殊的方法,它的物件可用于更新記錄,與“first”方法不同。
所以你的代碼必須改為:
public function update(Request $request, Alert $alert)
{
$alert = Alert::where('id', $alert->id); // or: Alert::find($alert->id);
$alert->type = $request->type;
$alert->title = $request->title;
$alert->body = $request->body;
$alert->link = $request->link;
$alert->eff_dt = Carbon::parse($request->eff_dt);
$alert->exp_dt = Carbon::parse($request->exp_dt);
$alert->note = $request->note;
$alert->user_id = auth()->user()->id;
$alert->save();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/346211.html
上一篇:在會話中保存下拉串列中的資料并顯示在另一個頁面Codeigniter
下一篇:Laravel重定向到錯誤的路線
