Laravel 5

Requête relationnelle double

  • Avatar de ArtemisLhow
    Membre depuis :
    06/12/2018
    Messages :
    16

    Bonsoir,

    J'ai un soucis avec les relations entre trois tables... très concrétement j'ai une table "périodes" liée à une table "ateliers" liée à une table "inscriptions".

    Je souhaite récupèrer toutes mes périodes, les ateliers liés à ces périodes et les inscriptions de ces mêmes ateliers. J'arrive àf aire la première partie de la requête, mais pas la seconde.

    $donnees = Periodes::with('Ateliers')->where('archive', '=', '0')->get();

    Avec ça j'ai les périodes et leurs ateliers, mais pas les inscriptions. Et lorsque j'essaie :

    $donnees = Periodes::with('Ateliers')->where('archive', '=', '0')::with('Inscriptions')->get();

    Bah forcement ça ne marche pas...

    Voilà la construction de mes relations :

    PERIODES

    <?php

    namespace App\Models;

    use Illuminate\Database\Eloquent\Model;

    class Periodes extends Model
    {

    protected $table = 'periodes';
    public $timestamps = false;
    protected $fillable = array('nom', 'debut', 'fin');

    public function Ateliers()
    {
    return $this->hasMany('App\Models\Ateliers', 'periodes_id');
    }

    }

    ATELIERS

    <?php

    namespace App\Models;

    use Illuminate\Database\Eloquent\Model;

    class Ateliers extends Model
    {

    protected $table = 'ateliers';
    public $timestamps = false;
    protected $fillable = array('nom', 'description', 'prix_1', 'prix_2', 'prix_3', 'prix_4', 'date', 'debut', 'fin', 'structure', 'places', 'covoiturage', 'familles', 'periodes_id');

    public function Paiement()
    {
    return $this->hasOne('App\Models\Paiements', 'id_paiement');
    }

    public function PeriodeAtelier()
    {
    return $this->hasOne('App\Models\Periodes', 'id');
    }

    public function InscriptionsAtelier()
    {
    return $this->hasMany('App\Models\Inscriptions', 'ateliers_id');
    }

    }

    Une idée pour résoudre ça ?

    D'avance mercii !

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

    Bonjour,

    Comme les relations s'enchainent ça doit passer comme ça :

    $donnees = Periodes::with('Ateliers.Inscriptions')->where('archive', '=', '0')->get();
  • Avatar de ArtemisLhow
    Membre depuis :
    06/12/2018
    Messages :
    16

    Bonjour,

    Merci à toi, simple et efficace comme toujours ! =D

Vous ne pouvez pas répondre à ce sujet.