/ / Atualização em “usuário” e “técnica” com conexão um para um - laravel, laravel-5, laravel-5.2, laravel-5.1

Atualização sobre "usuário" e "tecnologia" com conexão individual - laravel, laravel-5, laravel-5.2, laravel-5.1

Tenho duas tabelas de usuário e técnico com uma parauma conexão, o técnico herda do usuário. Após editar as informações do técnico através do formulário de edição e salvar nenhuma atualização acontece nas tabelas do usuário e do técnico. e sem erros também.

Aqui está o meu código:

Controladores

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

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

$technicien=technicien::find($id);
$technicien->update($request->all());
$technicien->user->update($request->get("user"));
$user->nom = $request->update("nom");

return redirect("/technicien");
}

Visão

 @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", $technicien->technicien  ) }}" 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 ="{{$technicien->moyenne_avis}}" >
</div>
<div class="form-group">
<label for="">Etat Technicien</label>
<input type="text"  name="actif" class="form-control" value ="{{$technicien->actif}}" >
</div>

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




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

Route.php

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

Model1

<?php

namespace App;

use IlluminateDatabaseEloquentModel;
use IlluminateDatabaseEloquentSoftDeletes;
class technicien extends Model
{
protected $fillable = [
"moyenne_avis", "actif",
];
use SoftDeletes;
protected $guarded = [];
protected $dates = ["deleted_at"];
public function zoneintervention()
{
return $this->belongsToMany("Appzoneintervention","technicien_zone","technicien_id","zoneintervention_id");

}
public function metier()
{
return $this->belongsToMany("Appmetier","technicien_metier","technicien_id","metier_id");

}
public function user()
{
return $this->belongsTo("AppUser");
}

public function tarificationtache()
{
return $this->belongsToMany("Apptarificationtache","technicien_tarificationtache","technicien_id","tarificationtache_id");
}


}

Model2

<?php

namespace App;

use IlluminateNotificationsNotifiable;
use IlluminateFoundationAuthUser as Authenticatable;

class User extends Authenticatable
{
public function technicien()
{
return $this->hasOne("Apptechnicien");

}

use Notifiable;

/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
"email", "password","nom","prenom","tel","mobil","role",
];

/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
"password", "remember_token",
];
}

insira a descrição da imagem aqui

insira a descrição da imagem aqui

Respostas:

1 para resposta № 1

controler

public function edit($id)
{
// better to use findOrFail (it will throw an exception about missing
objects)
$technicien = technicien::findOrFail($id);
return view("technicien.edit", compact("technicien"));
}

public function update(Request $request, $id)
{
$technicien=technicien::findOrFail($id);
$technicien->user->update($request->get("user"));
$technicien->update($request->get("technicien"));
return redirect("/technicien");
}

e a vista

@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", $technicien ) }}"
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="{{$technicien->user->nom}}" >
</div>
<div class="form-group">
<label for="prenom">Prenom</label>
<input id="prenom" type="text" class="form-control"
name="user[prenom]" value="{{$technicien->user->prenom}}" >
</div>
<div class="form-group">
<label for="prenom">Prenom</label>
<input id="prenom" type="text" class="form-control"
name="user[tel]" value="{{$technicien->user->tel}}" >
</div>
<div class="form-group">
<label for="prenom">Prenom</label>
<input id="prenom" type="text" class="form-control"
name="user[mobil]" value="{{$technicien->user->mobil}}" >
</div>
<div class="form-group">
<label for="prenom">Prenom</label>
<input id="prenom" type="text" class="form-control"
name="user[role]" value="{{$technicien->user->role}}" >
</div>
<div class="form-group">
<label for="prenom">Email</label>
<input id="prenom" type="text" class="form-control"
name="user[email]" value="{{$technicien->user->email}}" >
</div>
<div class="form-group">
<label for="prenom">Email</label>
<input id="prenom" type="text" class="form-control"
name="user[password]" value="{{$technicien->user->password}}" >
</div>
<div class="form-group">
<label for="">moyenne Avis</label>
<input type="text"  name="technicien[moyenne_avis]"
class="form-control" value="{{$technicien->moyenne_avis}}" >
</div>
<div class="form-group">
<label for="">Etat Technicien</label>
<input type="text"  name="technicien[actif]"
class="form-control" value="{{$technicien->actif}}" >
</div>

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

0 para resposta № 2

Tente fazer com a relação um para um. Faça a relação entre a tabela do usuário e a tabela do técnico, depois tente fazer a atualização.


0 para resposta № 3

Tente isso no controlador

$user = User::with("technicien")->find($id);
$data["id"] = $id;

$data = $this->validate($request, [
"moyenne_avis" => "required",
]);

$user->technicien()->whereUserId($data["id"])->update(["moyenne_avis" => $data["moyenne_avis"]
]);

return redirect("/technicien")->with("Success", "Records updated");

Altere também o método do formulário conforme abaixo em seu view.blade

<form action="{{ action("TechnicienController@update", $user->id) }}" method="post">

também, em vez de {{ method_field("PATCH") }} usa isto <input name="_method" type="hidden" value="PATCH">

Nota: O nome da tabela deve ser plural para o controlador e o nome do modelo.
por exemplo: Nome da tabela: usuários Nome do controlador: UserController Nome do modelo: usuário
Certifique-se de fazer isso mesmo nos urs também.