Laravel 5

BelongTo() ne fonctionne pas

  • Avatar de MaxAntoine
    Membre depuis :
    14/11/2019
    Messages :
    3

    Bonjour, je me dirige vers vous car j'ai passé mon après midi à bloqué sur quelque chose qui dois ête simble,
    Je m'explique:

    • J'ai deux tables "Users" et "UserClear" avec un champs commun ("id_tss" et "user_id_tss" il ne sagit donc pas de l'id des deux table(La clé primaire))
    • Je dois donc réalisé un hasmany() et belongTo()

    Voici mon code des deux models

    class User extends Authenticatable
    {
    use Notifiable;

    /
    The attributes that are mass assignable.

    @var array
    /
    protected $fillable = [
    'login', 'lastname', 'firstname', 'id_tss', 'email', 'password', 'rank'
    ];

    /

    The attributes that should be hidden for arrays.

    @var array
    /
    protected $hidden = [
    'password', 'remember_token',
    ];

    public function userClear()
    {
    return $this->hasMany('App\UserClear', 'user_id_tss','id_tss');
    }
    }

    et

    class UserClear extends Model
    {
    protected $table = 'user_clear';

    /
    The attributes that are mass assignable.

    @var array
    /
    protected $fillable = [
    'user_id_tss', 'lastname', 'firstname', 'email', 'password_temp'
    ];

    /

    Get the user of this user_clear
    /
    public function testtest()
    {
    return $this->belongsTo('App\User', 'id_tss', 'user_id_tss');
    }
    }

    Voici maintenant mon code dans la controleur

    public function test()
    {
    //Je test le HasMany()
    $user= User::findorfail(1);
    echo $user->userClear;

    //Je test le belongTo()
    $userClear = UserClear::findorfail(1);
    echo $userClear->testtest;
    }

    Le hasMany() fonctionne parfaitement la où le belongTo() ne fonctionne pas du tout et me retourne rien du tout.

    Merci d'avance pour le temps que vosu allez y passé, je suis à votre disposition si vous avez des questions suplémentaire.

  • Avatar de itanea
    Membre depuis :
    15/02/2019
    Messages :
    31

    Hello,

    Je dis peut être une bétise, mais ton model User ne devrait il pas étendre plutôt model et implémenter authenticatable ?

    class User extends Model implements Authenticatable

    {

    C'est une réponse rapide, je n'ai pas eu le temps de tester.

    ++

  • Avatar de MaxAntoine
    Membre depuis :
    14/11/2019
    Messages :
    3

    Salut, merci de ta réponse, alors c'est le model crée de base par Laravel,
    après des heures de test j'ai enfin trouvé, j'ai inversés les paramètres dans mon belongsTo()

    Voici ce que j'aurai du ecrire :

    /*
    Get the user of this user_clear
    */
    public function testtest()
    {
    return $this->belongsTo('App\User', 'user_id_tss', 'id_tss');
    }
  • Avatar de itanea
    Membre depuis :
    15/02/2019
    Messages :
    31

    Ha oui bien vu, perso, j'avais pas fait gaffe à l'ordre des paramètres.
    Du coup Laravel t'envoyait une page d'erreur tout de même (avec le mode debug activé) ?

  • Avatar de MaxAntoine
    Membre depuis :
    14/11/2019
    Messages :
    3

    Non du tout, c'est ce qui est perturbant, il me disai juste qu'il ne trouvez absolument rien.
    Je sais jamais dans quel sens mettre les paramètres et en plus c'est la première fois que je n'utiliser pas le user_id de base avec id.
    Mais voilà pour les prochains, faite bien attention a l'ordre de vos paramètres.

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

    Si tu te trompes avec deux possibilités évite de jouer au loto :)

  • Avatar de itanea
    Membre depuis :
    15/02/2019
    Messages :
    31

    Pas faux BestMomo :D

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

    Plus sérieusement personnellement quand je coince dans ce genre je regarde la requête générée, ça permet de lever rapidement le loup...

Vous ne pouvez pas répondre à ce sujet.