【问题标题】:Update Method in LaravelLaravel 中的更新方法
【发布时间】:2020-03-31 19:25:46
【问题描述】:

我是 Laravel 的新手。我正在使用 laravel 5.4 并尝试验证和更新模型中的数据。代码如下所示:

路线

Route::resource ('contribution-structure', 'ContributionStructureController');

ContributionStructureController

public function update(Request $request, $id)
{
    //
     $data = $this->validate($request, [
        'employer_name' => 'required|min:3',
    ]);

    $plansubmission = PlanSubmission::find($id);
    $plansubmission->update($data);


}

验证有效,但是当我更新时,我收到一条错误消息:

传递给 Illuminate\Database\Eloquent\Model::update() 的参数 1 必须 是数组类型,给定 null,调用 C:\xampp\htdocs\tapp\app\Http\Controllers\ContributionStructureController.php 在第 84 行并定义

【问题讨论】:

  • 您为什么使用 5.4 而不是当前的 6.x?我知道在旧版本的 Laravel 中没有返回任何东西(但我不确定它是什么时候添加的),这就是我认为这里发生的事情。更新到最新版本,这个问题应该会消失。
  • 为什么不$plansubmission-> employer_name = $request ->only('employer_name')这样使用??
  • @A.ANoman 必须是$plansubmission->employer_name = $request ->get('employer_name'); $plansubmission->save()。由于only() 返回一个数组,你需要确保之后保存模型,updated() 会自动完成。

标签: laravel


【解决方案1】:

今天我讲了php框架laravel中的更新方法,当我们在laravel中应用更新方法时出现错误消息

当我们构建更新方法来更新数据库表的数据时,我们会遇到一些问题,例如 控制器不获取 id Route 问题 哪个路由好 PUT, get, Post, Patch 还有laravel版本问题

首先是控制器问题

public function Delivery_charges_update(Request $request, $id)
    {
       // return $request->all();
        $request->validate([
                'start-km' => 'required',
                'end-km' => 'required',
                'amount' => 'required',
                 ]);

        $data = Deliverycharges::find($id);
        $data->start_km = $request->get('start-km');
        $data->end_km = $request->get('end-km');
        $data->amount = $request->get('amount');
        $data->update();


        return redirect('/SuperAdmin/Delivery_charges');
    }

然后是第二个路线问题,您可以通过 post 方法制作路线,因为它是最好的 Route::post('/Delivery_charges_update/{id}', 'SettingController@Delivery_charges_update');

然后是第三个 laravel 版本问题 所以laravel的最新版本是5.5

所有问题的解决方案都适用于这个 laravel 版本

【讨论】:

    【解决方案2】:

    验证器在 Laravel 5.5 之前的版本中不返回任何内容。为了让您的代码正常工作,我建议您更新到最新版本。特别是对于新项目,您应该始终从最新的稳定版本开始。

    如果您不想更新,则需要在验证后从请求中提取数据。

    public function update(Request $request, $id)
    {
        $this->validate($request, [
            'employer_name' => 'required|min:3',
        ]);
    
        $data = $request->only('employer_name');
    
        $plansubmission = PlanSubmission::find($id);
        $plansubmission->update($data);
    }
    

    【讨论】:

    • 非常感谢。这回答了它
    猜你喜欢
    • 2020-05-16
    • 2017-09-14
    • 2019-02-22
    • 2021-12-25
    • 1970-01-01
    • 1970-01-01
    • 2020-07-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多