mballaag

@chagouani ok si c'est une relation manytomany le controller doit changer vers ca :

public function create($technicien_id)   
{
    $technicien = technicien::find($technicien_id);
    $taches = Tache::orderBy('libelle_tache', 'asc')->get();
    $metiers = Metier::orderBy('libelle_metier', 'asc')->where('techniciens', function($query, $technicien_id){$query->where('id',$technicien_id;})->get();
    return view('tarification.create')->with('technicien', $technicien)->with('metiers', 
   $metiers);
}

pour les problèmes lié à la vue fraudrait s'assurer que la table metier contient bien id je pense

chagouani
"Parse error: syntax error, unexpected ';', expecting ',' or ')'"
mballaag

@chagouani ok:

public function create($technicien_id)   
{
    $technicien = technicien::find($technicien_id);
    $taches = Tache::orderBy('libelle_tache', 'asc')->get();
    $metiers = Metier::orderBy('libelle_metier', 'asc')->where('techniciens', function($query, $technicien_id){
        $query->where('id',$technicien_id);
    })
    ->get();
    return view('tarification.create')->with('technicien', $technicien)->with('metiers', 
   $metiers);
}

petite correction pour la vue sinon tu vas te retrouver avec des strings dans le controller

@foreach($metiers as $metier)
      <option value={{$metier->id}}>{{$metier->libelle_metier}}</option>
@endforeach
                                
chagouani

@mballaag

"Missing argument 2 for 
    App\Http\Controllers\TarificationController::App\Http\Controllers\{closure}()"
mballaag

@chagouani try this:

public function create($technicien_id)   
{
    $technicien = technicien::find($technicien_id);
    $taches = Tache::orderBy('libelle_tache', 'asc')->get();
    $metiers = Metier::orderBy('libelle_metier', 'asc')->where('techniciens', function($query) use ($technicien_id){
        $query->where('id',$technicien_id);
    })
    ->get();
    return view('tarification.create')->with('technicien', $technicien)->with('metiers', 
   $metiers);
}
chagouani

@mballaag

"SQLSTATE[42S22]: Column not found: 1054 Unknown column 'techniciens' in 'where 
clause' (SQL: select * from `metiers` where `techniciens` = (select * where `id` = 2) 
and `metiers`.`deleted_at` is null order by `libelle_metier` asc) ◀"
mballaag

désolé pour le retard @chagouani :

public function create($technicien_id)   
{
    $technicien = technicien::find($technicien_id);
    $taches = Tache::orderBy('libelle_tache', 'asc')->get();
    $metiers = Metier::orderBy('libelle_metier', 'asc')->whereHas('techniciens', function($query) use ($technicien_id){
        $query->where('id',$technicien_id);
    })
    ->get();
    return view('tarification.create')->with('technicien', $technicien)->with('metiers', 
   $metiers);
}
chagouani

@mballaag

pas grave je vous remercie pour le temps que vous m'avais sacré

"SQLSTATE[42S22]: Column not found: 1054 Unknown column 
'technicien_zone.metier_id' in 'where clause' (SQL: select * from `metiers` where 
exists (select * from `techniciens` inner join `technicien_zone` on `techniciens`.`id` 
= `technicien_zone`.`technicien_id` where `metiers`.`id` = 
`technicien_zone`.`metier_id` and `id` = 2 and `techniciens`.`deleted_at` is null) 
and `metiers`.`deleted_at` is null order by `libelle_metier` asc) ◀"    
mballaag

tu dois donc avoir un problème avec la déclaration de ton modèle.

si 'technicien-zone' c'est ta table intermediaire entre 'techniciens' et 'metiers' il doit contenir les colonnes 'technicien_id' et metier_id comme tu les a déclaré. or technicien_zone ne contient pas de colonne 'metier_id'

chagouani

@mballaag nn la table intermédiaire entre metier et technicien 'technicien_metier'

mballaag

@chagouani ton model devrait être alors :

metier.php

public function techniciens()
{
    return $this- 
    >belongsToMany('App\technicien','technicien_metier','metier_id','technicien_id');

}

technicien.php

public function metier()
{
    return $this- 
>belongsToMany('App\metier','technicien_metier','technicien_id','metier_id');

}

dans le premier vous avez rempli la table comme etant 'technicien_zone'

chagouani

@mballaag j'ai modifier le model et j'ai l'aisser la vue et le controller comme suite

<div class="col-md-4">
    <label>Metier: </label>
    <select onchange="getTachesByMetier(this.value)" style="width: 
    200px" class="productm form-control" id="metiers">
        <option value="">-Select-</option>
    @foreach($metiers as $metier)
          <option value={{$metier->id}}>{{$metier->libelle_metier}}</option>
    @endforeach
   </select>
            </div>

cotroller

 public function create($technicien_id)   
{
    $technicien = technicien::find($technicien_id);
    $taches = Tache::orderBy('libelle_tache', 'asc')->get();
    $metiers = Metier::orderBy('libelle_metier', 'asc')->whereHas('techniciens', 
    function($query) use ($technicien_id){
        $query->where('id',$technicien_id);
    })
    ->get();
    return view('tarification.create')->with('technicien', $technicien)->with('metiers', 
   $metiers);
}

j'ai u ce message d'erreur

"Trying to get property of non-object (View: 
   C:\xampp\htdocs\projet\resources\views\tarification\create.blade.php)"
mballaag

metier possède t'il bien les attributs 'id' et 'libelle_metier'?? si oui ajoute dans ton controller avant le return

var_dump( $metiers); die;

vous capturez et envoyer le résultat afin que je puisse le consulter.

chagouani

@mballag

       object(Illuminate\Database\Eloquent\Collection)#121 (1) { ["items":protected]=> 
 array(1) { [0]=> object(App\metier)#361 (27) { ["guarded":protected]=> array(0) { } 
 ["dates":protected]=> array(1) { [0]=> string(10) "deleted_at" } 
["connection":protected]=> string(5) "mysql" ["table":protected]=> NULL 
["primaryKey":protected]=> string(2) "id" ["keyType":protected]=> string(3) "int" 
["incrementing"]=> bool(true) ["with":protected]=> array(0) { } 
["withCount":protected]=> array(0) { } ["perPage":protected]=> int(15) ["exists"]=> 
bool(true) ["wasRecentlyCreated"]=> bool(false) ["attributes":protected]=> array(5) { 
["id"]=> int(3) ["libelle_metier"]=> string(8) "metier 2" ["deleted_at"]=> NULL 
["created_at"]=> string(19) "2018-06-08 11:41:36" ["updated_at"]=> string(19) "2018-06-08 
11:41:36" } ["original":protected]=> array(5) { ["id"]=> int(3) ["libelle_metier"]=> string(8) 
 "metier 2" ["deleted_at"]=> NULL ["created_at"]=> string(19) "2018-06-08 11:41:36" 
["updated_at"]=> string(19) "2018-06-08 11:41:36" } ["changes":protected]=> array(0) { } 
["casts":protected]=> array(0) { } ["dateFormat":protected]=> NULL 
["appends":protected]=> array(0) { } ["dispatchesEvents":protected]=> array(0) { } 
["observables":protected]=> array(0) { } ["relations":protected]=> array(0) { } 
["touches":protected]=> array(0) { } ["timestamps"]=> bool(true) ["hidden":protected]=> 
array(0) { } ["visible":protected]=> array(0) { } ["fillable":protected]=> array(0) { } 
["forceDeleting":protected]=> bool(false) } } }
mballaag

@chagouani $metier est correctement envoyé sur la vue. je voudrais plus d'informations sur l'erreur pour pouvoir la debug. pouvez vous capturer et afficher l'erreur la plus récente dans les log le chemin du fichier est certainement votre_fichier\storage\logs\laravel-2018-06-14.log

Please sign in or create an account to participate in this conversation.