Besoin d'aide ?

Relations compliquées...

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

    Bonjour !

    J'ai un petit soucis relationnel, riende personnel, mais ça me gonfle un chouille ah ah

    J'essaie désespérément de faire une relation qui dit : prend toute la table x et toute la table y quand dans la table x la colonne y_id correspond à la colonne id de la table y ... jusque là c'est simple, je fais un simple :

    x::with('y')->get()

    Mais comment je fais la laison dans le model ? J'ai essayé ça :

    public function y()
    {
    return $this->belongsTo('App\Models\y', 'y');
    }

    Sans succès...

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

    Salut,

    Quand tu dis sans succès ça donne quoi en fait ?

    En théorie ta relation est correcte, mais tout dépend ce que tu mets dans x et y...

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

    En fait si je regarde la liste des requêtes, j'ai trois requêtes effectuées :

    // Requête liée à mon authentification
    select from users where id = 1 limit 1

    // Requête liée à la première partie de la commande
    select
    from formules_adhesion

    // Requête liée à la relation entre les tables
    select * from groupes_adhesion where groupes_adhesion.id in (0)

    Donc tout est presque bon... sauf que la dernière requête je devrais avoir :

    select * from groupes_adhesion where groupes_adhesion.id in (1,2)

    Pour la simple et bonne raison que ma table formules_adhesioncontient deux enregistrements ayant pour valeur de colone groupe_adhesion_id les chiffres 1 ou 2 ...

    Je doit mal comprendre quelque chose dans la construction des relations, mais quoi...

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

    Je soupçonne une mauvaise appelation de la clé étrangère.

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

    J'aimerai bien, mais si c'est celà, ça m'échappe ...

    https://ibb.co/F8f36wG
    https://ibb.co/YfLzXYj

    <?php

    namespace App\Models;

    use Illuminate\Database\Eloquent\Model;

    class FormulesAdhesion extends Model
    {

    protected $table = 'formules_adhesion';
    public $timestamps = false;
    protected $fillable = array('groupes_adhesion_id', 'nom_formule', 'duree', 'prix');

    public function GroupeAdhesions()
    {
    return $this->belongsTo('App\Models\GroupesAdhesion', 'groupe_adhesion');
    }

    }
    <?php

    namespace App\Models;

    use Illuminate\Database\Eloquent\Model;

    class GroupesAdhesion extends Model
    {

    protected $table = 'groupes_adhesion';
    public $timestamps = false;
    protected $fillable = array('nom');

    public function formulesAdhesion()
    {
    return $this->hasMany('App\Models\FormulesAdhesion', 'id');
    }

    }
  • Avatar de MaitrePylos
    Membre depuis :
    27/05/2013
    Messages :
    264

    Bonsoir,
    Et en mettant l'id :

    public function GroupeAdhesions()

    {

    return $this->belongsTo('App\Models\GroupesAdhesion', 'groupes_adhesion_id');

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

    Forcement...

    Plus c'est gros plus moins j'le vois... satané s manquant également... merci à vous deux !

Vous ne pouvez pas répondre à ce sujet.