错误“属性[nom]在Laravel中的此集合实例上不存在”

时间:2018-03-01 09:48:10

标签: laravel laravel-5.2 laravel-5.1

我有两个表,usertechnicien,具有一对一的关系。当我使用下面的表格“Modifier Techicien”编辑技术时,我希望表格能够自动填充来自表格用户和技术人员的当前信息。

目前,该表单仅使用技术人员的信息进行自动填充。

enter image description here

控制器

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

public function update(Request $request, $id)
{
    // do some request validation
    $technicien=technicien::find($id);
    $technicien->update($request->all());
    return redirect('technicien');
}

edit.blade.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', $actif->id , $moyenne_avis->id , $users->nom , $users->prenom) }}" method="post">
        {{csrf_field()}}
        {{ method_field('PATCH') }}


            <div class="form-group">
                <label for="">Nom</label>
                <input id="nom" type="text" class="form-control" name="nom" value="{{$nom->nom}}" >
            </div>
            <div class="form-group">
                <label for="">Prenom</label>
                <input id="nom" type="text" class="form-control" name="nom" value="{{$prenom->prenom}}" >
            </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 ="{{$actif->actif}}" >
            </div>



            <div class="form-group">

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

1 个答案:

答案 0 :(得分:0)

如果您的Laravel关系设置正确,您应该能够:

<强>控制器

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);
}

然后在视图中使用$ user-&gt; prenom,$ user-&gt; nom。 请注意,您到目前为止所做的是在$ users变量中加载所有用户,而不仅仅是一个!

这部分看起来也很奇怪:

return view('technicien.edit',['moyenne_avis'=>$technicien],
['actif'=>$technicien],['user_id'=>$technicien])-
>with('users',$users);

您可以简单地传递整个$ technicien和$ user对象,然后从视图中访问它们的属性。以下是一个示例实现:

<强>控制器

public function edit($id)
{
    //Get the technicien and the user associated with it (if the hasOne relation ship is set right)
    $technicien=technicien::find($id);
    $user = $technicien->user;

    //return the view by passing a variable reprensenting the user and one reprensenting the technicien, you could probably access the user directly through the technicien also
    return view('technicien.edit')-
>with(['user' => $user, 'technicien' => $technicien]);
}

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');
}

<强> edit.blade.php

@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', $technicien->id}}" method="post">
        {{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="">moyenne Avis</label>
                <input type="text"  name="moyenne_avis" class="form-control" value ="{{$technicien->moyenne_avis ?? 0}}" >
            </div>
            <div class="form-group">
                <label for="">Etat Technicien</label>
                <input type="text"  name="actif" class="form-control" value ="{{$technicien->actif ?? 0}}" >
            </div>

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