php - Laravel Framework 中的更新正在返回一条新记录

标签 php laravel eloquent laravel-8

我是 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/

相关文章:

使用 php 变量作为 id 的 javascript 切换函数

javascript - 在父子关系中打印数组

php - Laravel Guzzle GET请求

php - Laravel 模型恢复事件

sql - Eloquent ORM 交叉搜索

PHP 重定向,保留 POST

PHPUnit 和 ZF2 服务

php - 验证重定向后保持模式打开

laravel - 使用 Carbon 更改时区

php - Laravel Eloquent 用户与 friend 的关系