Bonjour,
Voila je rencontre un petit problème avec mon code.
Je code le framework du cours d'oPenclassrooms (sans faire de pub).
J'obtiens cette erreur :
Fatal error: Uncaught Error: Call to a member function setDateAjout() on array in /var/www/html/Framework/Library/Models/ArticlesManagerPDO.php:43 Stack trace: #0 /var/www/html/Framework/Apps/Frontend/Modules/Articles/ArticlesController.php(14): Library\Models\ArticlesManagerPDO->getList(0, 5) #1 /var/www/html/Framework/Library/BackController.php(35): Apps\Frontend\Modules\Articles\ArticlesController->executeIndex(Object(Library\HTTPRequest)) #2 /var/www/html/Framework/Apps/Frontend/FrontendApplication.php(19): Library\BackController->execute() #3 /var/www/html/Framework/Web/Bootstrap.php(31): Apps\Frontend\FrontendApplication->run() #4 {main} thrown in /var/www/html/Framework/Library/Models/ArticlesManagerPDO.php on line 43
Je ne comprends pas du tout pourquoi c'est un tableau qui est renvoyé et pas un objet vu ce code :
<?php
namespace Library\Models;
use \Library\Entities\Articles;
class ArticlesManagerPDO extends ArticlesManager
{
public function getList($debut = -1, $limite = -1)
{
$sql = 'SELECT id, auteur, titre, contenu, dateAjout, dateModif FROM news ORDER BY id DESC';
if ($debut != -1 || $limite != -1)
{
$sql .= ' LIMIT '.(int) $limite.' OFFSET '.(int) $debut;
}
$requete = $this->dao->query($sql);
$requete->setFetchMode(\PDO::FETCH_CLASS | \PDO::FETCH_PROPS_LATE, '\Entities\Articles');
$listeNews = $requete->fetchAll();
foreach ($listeNews as $news)
{
$news->setDateAjout(new \DateTime($news->dateAjout()));
$news->setDateModif(new \DateTime($news->dateModif()));
}
$requete->closeCursor();
return $listeNews;
}
}
Je vous remercie par avance de votre aide :)
Je suis pas sur que le forum de Grafikart soit la meilleure aide m'enfin, tu as aussi posté sur le forum d'OpenClassroom j'imagine.
Sinon à quoi correspond $this->doa
?
Bonjour,
tu retournes un fetchall, cette fonction retourne un array. Du coup c'est normal.
tu souhaites surement faire appel à l'un des éléments "en dessous", soit via un foreach, soit tu appelles fetch et non fetchall pour avoir le premier élément (si il ne t'en faut qu'un).