我是 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.');
}
我错过了什么?我在按预期工作的应用程序的另一部分中有相同的基本代码。提前致谢。
最佳答案
您没有获取您的行 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.');
}
关于php - Laravel Framework 中的更新正在返回一条新记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69818866/