Laravel 5

Attachement d'identifiant sur une table pivot [belongsToMany]

  • Avatar de watsonweb
    Membre depuis :
    08/02/2017
    Messages :
    124

    Salut à Tous.
    Je suis un peu bloqué dans la procedure de recupération d'un Id.
    En effet, il s'agit d'une relation belongsToMany entre deux tables "ecoles" et "filières".
    Les ecoles sont déjà enregistré par defaut depuis le back-office. A l'insertition des filières, je recupère l'id de l'école depuis un champs select. Ensuite, je met dans une variable pour pourvoir faire l'attach().
    Le problème c'est comment dois-je recupéré l'id de la filière qui s'enrégistre pour passer les deux id en paramètre de l'attach().
    J'ai essayé de faire un first mais celui-ci ne faire mon affaire car il prend toujours le premier et l'identifiant courant.
    Voici le code dans mon controller:

    public function create_filiere(FiliereRequest $request){

    $filieres = new Filiere;
    $filieres->nom_filiere = $request['nom_filiere'];
    $idEcole = $request['ecole_id'];

    $filieres->save();
    $idFilieres = Filiere::with(['ecoles'])->first();
    $idFiliere = $idFilieres->id;

    $filieres->ecoles()->attach($idEcole, idFiliere);
    return redirect()->route('listes_filiere',compact('filieres') );
    }

    Merci pour l'attention que vous accorderiez à mon soucis.

  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    2178

    Salut,

    En général on fait comme ça :

    $filiere = new Filiere;
    $filiere->nom_filiere = $request['nom_filiere'];
    $filiere->save();
    $filiere->ecoles()->attach($request['ecole_id']);

    Je ne comprends pas trop ta variable $filieres...

  • Avatar de watsonweb
    Membre depuis :
    08/02/2017
    Messages :
    124

    Merci pour le soutien @Bestmomo.
    La variable $filieres est celle qui contient les infos sur la filière qui dois être enregistrer.

  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    2178

    OK mais alors pouquoi la mettre au pluriel ?

  • Avatar de watsonweb
    Membre depuis :
    08/02/2017
    Messages :
    124

    c'est juste une convention que j'utilise puis dans la vue après la boucle je fais un alias au singulier.
    j'ai un soucis dans la vue.
    Suite à votre retour j'ai remplacé mon code par celui que vous aviez donné, ça marche bien.
    Le problème est au niveau de ma vue qui liste des filières car je souhaite recupère le nom de l'ecole associé.
    voici mon controller qui retourne les infos dans la vue:

    public function listes_filiere()
    {
    $filiere = Filiere::with('ecoles')->get();
    dd($filiere);
    return view('back.listesfiliere', compact('filiere'));
    }

    le retour du dd($filiere) est une collection avec la relation qui retourne aussi une collection mais quand je veux accéder à la relation de l'ecole pour afficher le nom on me dis que ça n'existe pas dansa la collection.
    Voici comment j'affiche dans la vue:

    @foreach($filiere as $f)
    {{ $f->ecoles->nom }}
    @endforeach
  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    2178

    Je suppose qu'il y a plusieurs écoles par filière, donc avec $f->ecoles tu récupères une collection dans laquelle il faut itérer pour avoir tous les noms.

  • Avatar de watsonweb
    Membre depuis :
    08/02/2017
    Messages :
    124

    Comme ça ?

    @foreach($filiere as $f)
    @foreach($f->ecoles as $e)
    {{ $e->nom }}
    @endforeach
    @endforeach

    Cela marche très bien. Merci
    Pour ceux qui rencontrerons ce même problème suivez bien la demarche et tou vas marché chez vous aussi. Tous est bien claire dans la conversation. Merci à Bestmomo depuis le site du zero et laravel.silo toujours de bon article.

  • Avatar de FLEMO
    Membre depuis :
    03/01/2018
    Messages :
    8

    Bonjour Bestmomo, pour ce code , ben j'i toujours pas resolu mon soucis meme par javascript

Vous ne pouvez pas répondre à ce sujet.