[chapitre 18 : refactoring] la fonction last()

Par DENIZE Jean-Sébastien, il y a 10 ans


**** ma fonction last() me retourne
( ! ) Notice: Trying to get property of non-object : je n'arrive pas à trouver la solution la requete SQL est bonne, la connexion à la db aussi... je pense que ça viens de ma fonction query mais pas sur, et je sais pas comment on met du code dans le forum pour que ça fasse joli... si quelqu'un a eu le meme souci ;-)

6 réponses

arnich, il y a 10 ans

on a peu dinfo là. a mon avis tu essais d'appeler une fonction mais ta variable doit etre nulle

PhiSyX, il y a 10 ans

Hello. Les données retournées sont sous forme de tableau et non pas sous forme d'objet.
Dans ton code, je vois que tu as défini un PDO::FETCH_CLASS, ce qui normalement devrait te retourner des données sous forme d'objet, donc je ne vois pas d'où peut venir le problème à moins que le nom de la classe donné à PDO::FETCH_CLASS est mauvais. Fichier MysqlDatabase.php:query.

DENIZE Jean-Sébastien, il y a 10 ans
<?php foreach (App::getInstance()->getTable('post')->last() as $post): ?> <h2> <a href="<?= $post->url; ?>"><?= $post->title; ?></a> </h2> <?php endforeach; ?>

le probleme vient du $post-> //

public function last() { return $this->query(' SELECT posts.id, posts.title, posts.content, posts.date, categories.title AS categorie FROM posts LEFT JOIN categories ON category_id = categories.id ORDER BY posts.date DESC'); } public function query($statement, $attributes=null, $one=false){ if ($attributes){ return $this->db->prepare( $statement, $attributes, str_replace('Table', 'Entity', get_class($this)), $one); }else{ return $this->db->query( $statement, str_replace('Table', 'Entity', get_class($this)), $one); }
DENIZE Jean-Sébastien, il y a 10 ans

je precise que la fonction all() retourne bien un stdclass

DENIZE Jean-Sébastien, il y a 10 ans

oui, je je pense que ça viens du refactoring que j'ai pas fait correctement, je reprends tout depuis le depart et je vous tiens au courant