Laravel:编辑数据后更新数据库时出错

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel:编辑数据后更新数据库时出错相关的知识,希望对你有一定的参考价值。

我有两个表格“技术员”和表“用户”,一对一的连接,我有一个表格,我通过该表格编辑技术人员信息。当我保存更改时,我收到错误,更新不起作用。这是我的表单我的代码和错误的屏幕截图谢谢你提前。

route.php

Route::get('/technicien/{id}/edit', 'TechnicienController@edit');
Route::patch('/technicien/{id}', 'TechnicienController@update')-
>name('technicien.update');

edit.php

@extends('Layouts/app')
@extends('Layouts.master')
@section('content')
<div class="container">
    <div class="row">
        <div class="col-md-10">
            <h1>Modifier Technicien</h1>
        <form action="{{ route('technicien.update', $moyenne_avis->id , $actif->id , $user->nom , $user->prenom ,$user->email ) }}" method="update">
        {{csrf_field()}}
        {{ method_field('PATCH') }}


             <div class="form-group">
            <label for="nom">Nom</label>
            <input id="nom" type="text" class="form-control" name="user[nom]" value="{{$user->nom}}" >
        </div>
        <div class="form-group">
            <label for="prenom">Prenom</label>
            <input id="prenom" type="text" class="form-control" name="user[prenom]" value="{{$user->prenom}}" >
        </div>
        <div class="form-group">
            <label for="prenom">Email</label>
            <input id="prenom" type="text" class="form-control" name="user[email]" value="{{$user->email}}" >
        </div>

        <div class="form-group">
            <label for="">moyenne Avis</label>
            <input type="text"  name="moyenne_avis" class="form-control" value ="{{$moyenne_avis->moyenne_avis}}" >
        </div>
        <div class="form-group">
            <label for="">Etat Technicien</label>
            <input type="text"  name="actif" class="form-control" value ="{{$moyenne_avis->actif}}" >
        </div>

        <div class="form-group">
            <input type="submit" value="enregistrer" class="form-control btn btn-primary">
        </div>
            </div>




        </form>
    </div>
</div>
@endsection

controller1.php

public function edit($id)
{
    $technicien=technicien::find($id);
    $user = $technicien->user;
    return view('technicien.edit',['moyenne_avis'=>$technicien],
    ['actif'=>$technicien],['user_id'=>$technicien])->with('user',$user);
}

controller2.php

public function update(Request $request, $id)
{
    // do some request validation

    $technicien=technicien::find($id);
    $technicien->update($request->all());
    $technicien->user->update($request->get('user'));
    return redirect('technicien');
}

enter image description here

答案

你传递了太多的参数,在你的路线上你只需要一个参数!

我认为您在视图中只需要一个参数,即技术人员ID,它将在您的控制器查询中找到记录!

您可以尝试按照代码从表单中删除不可用的参数:

<form action="{{ route('technicien.update', $moyenne_avis->id ) }}" method="POST">

你的路线看起来像:

Route::get('/technicien/{id}/edit', 'TechnicienController@edit');
Route::post('/technicien/{id}', 'TechnicienController@update')->name('technicien.update');

希望这对你有所帮助!

以上是关于Laravel:编辑数据后更新数据库时出错的主要内容,如果未能解决你的问题,请参考以下文章

使用片段从数据库 SQLite 获取数据时出错

在 laravel 中使用基本更新查询时出错

尝试迁移Laravel数据库时出错

Laravel 5.3 Passport - Vue 错误:评估表达式时出错

更新到 Laravel 5.4 时出错

模型保存或更新时 Laravel 尾随数据异常