Et si tu bindParam l'email ?
Au lieu de faire parent::getPDO() tu peux faire $this->getPDO()
Tu peux te créer une propriété entity = User::class et te créer un modèle afin de récupérer ton user sous forme d'objet avec PDO::FETCH_CLASS
Bonjour,
Voilà je vous explique je suis en train de mettre en place le module utilisateur. Et sur la class Auth j'ai une erreur que je ne m'explique pas. (nb: j'ai remplacé l'adresse mail par des * pour des raisons de confidentialité)
Quand je regarde le code je ne vois pas le problème et quand je commente la partie lié à l'update du last_login, pas de problème à me connecter.
Je tiens à rappeler que tout fonctionne si j'enlève la partie update du last_login.
Merci par avance de votre aide.
Et si tu bindParam l'email ?
Au lieu de faire parent::getPDO() tu peux faire $this->getPDO()
Tu peux te créer une propriété entity = User::class et te créer un modèle afin de récupérer ton user sous forme d'objet avec PDO::FETCH_CLASS
Je te remercie pour l'aide Curvata, mais l'update se fait sur le last_login et non l'email. Je ne comprends pas pourquoi tu veux que je fasses ta dernière phrase, ni même à quoi ça servira.
Mon problème était bien plus simple que ça, j'avais oublié les quotes sur la variable $email
Tu te fais une classe qui va représenter ton user.
Dans ton CRUD tu rajoutes une propriété entity
Dans ta classe auth tu redéfini la propriété entity
entity = user::class
Quand tu veux récupérer des users tu fais
->fetchAll(PDO::FETCH_CLASS, $this-entity)
C'est plus sympa d'avoir un objet qu'un tableau..
$user->getName()
$user->getPass()
Par la suite, tu créeras des classes afin de représenter un article, un produit, une catégorie,... Tu auras cas changer la propriété
entity
Je te remercie Curvata tu viens de me donner ce qui me manquait, la logique derrière un CRUD. Donc je comprends la logique de faire un objet par module, les appels à la BDD sont simplifiés. La seule chose que je ne déchiffre pas, que je ne comprends pas c'est ce que fait exactement entity. J'imagine que c'est une variable, mais le user::class je ne trouve rien de tel dans la doc php.
Je vais me baser sur ce que tu m'as donné pour faire des tests.
constante spéciale
La constante spéciale ::class permet une résolution de nom de classe pleinement qualifié au moment de la compilation, cela est utile pour les classes dans un espace de nom.
Par exemple, depuis ta classe "auth" tu veux utiliser ta méthode "searchElement" de ta classe Crud, tu fais $auth->searchElement()
et dans celle-ci tu définis ton fetch (PDO::FETCH_CLASS, $this-entity).
Comme le entity de "auth" c'est "user::class" tu auras un objet pour modèle ta classe "User", si tu as par la suite une classe "PostCrud", tu n'auras cas redéfinir "entity" entity = post::class et faire ton $postCrud->searchElement() en ayant bien entendu changé également ta propriété "table".
Tu devrais te faire une classe "userCrud" avec tes deux méthodes "update" et "select" et dans "auth" tu fais ta logique.
Un truc dans le genre
Je te remercie, je me creuse le cerveau, mais comme je ne suis pas sur un framework certaines choses ne fonctionne peut-être pas.
La propriété Entity n'existe pas sur PHP 7.2, du coup j'essaie de décortiquer la logique derrière ce que tu m'as écris. De ce que j'ai compris:
1 - Le user (ou articles ....) j'en fais des objets avec les getter et les setter
2 - Dans le crud j'initie les entités (donc objets)
3 - J'appelle ces objets soit dans les méthodes style updateElement ou searchElement ou dans des classes style Auth
4 - Je get ou set ces objets à partir de ses méthodes ou classes
Maintenant j'ai du mal à comprendres dans mon Crud comment un $user = user::class fera appelle à la classe User. Est-ce que ça veut dire que c'est équivalent à un $user= new User() ?
Je pense que j'ai du mal à definir ce qu'est entity étant donné qu'à part une référence à Symfony, j'ai rien trouvé.
Encore merci pour ton aide.