Besoin d'aide ?

Comportement étrange requête where

  • Avatar de TerryG
    Membre depuis :
    03/01/2019
    Messages :
    3

    Bonjour, Bonsoir

    Je dois réaliser un système d'authentification pour un site web utilisant Eloquent. Tout se passe plutôt bien seulement voilà : lorsque l'authentification a réussi je souhaite enregistrer le rôle, le login et l'id utilisateur dans une variable de session. Seulement la requête allant chercher ces informations a un comportement étrange :

    $infos = Compte::select('Prenom', 'Role')->where('user_id', $uid)->first();

    Celle-ci après un var_dump de $infos et de $uid m'indique $uid a bien la valeur 2 et que $infos est NULL.
    Cependant la requête suivante :

    $infos = Compte::select('Prenom', 'Role')->where('user_id', 2)->first();

    Me renvoie les informations dont j'ai besoin et fonctionne parfaitement. Je ne comprends donc pas pourquoi la requête ne fonctionne pas lorsque j'envoie ma variable en paramètre :/ Si vous avez des suggestions, Merci d'avance

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

    Salut,

    Oui c'est plutôt bizarre, regarde la requête générée :

    $infos = Compte::select('Prenom', 'Role')->where('user_id', $uid)->toSql();
    dd($infos);
  • Avatar de TerryG
    Membre depuis :
    03/01/2019
    Messages :
    3

    J'obtiens la requête SQL suivante :

    string(57) "select Prenom, Role from Compte where user_id = ?"

    La question que je me pose : Comme c'est une requête préparée je comprends le '?' mais il ne devrait pas être remplacé par la valeur que j'ai passé en paramètre ?

    Merci de ton aide :)

  • Avatar de TerryG
    Membre depuis :
    03/01/2019
    Messages :
    3

    Bon alors je viens de trouver : le problème vient de moi. La réponse est dans ce Thread :
    https://openclassrooms.com/forum/sujet/eloquent-fonctionnement-etrange-requete-where
    Le paramètre que je passais n'était pas un simple int mais un tableau, voilà le pourquoi du comment.
    Merci quand même. :)

Vous ne pouvez pas répondre à ce sujet.