Décrivez ici votre problème ou ce que vous cherchez à faire.

Bonjour,
j'ai fais le TP du blog en php dans ma function all() de categoryTable la methode queryAndFetchAll n'est pas reconnu et
je ne conprend pas pourquoi.
je pense que je suis sur ce problème depuis trop longtemps et je vois pas erreur.
je vous met le code de categoryTable.php

"<?php
namespace App\Table;

use App\Model\Category;

use \PDO;

final class CategoryTable extends Table {

protected $table = "category";
protected $class = Category::class;

/**
 * @param App\model\Post[] $posts
 */
public function hydratePosts (array $posts): void {
    $postsByID = [];
    foreach($posts as $post){
        $post->setCategories([]);
        $postsByID[$post->getID()] = $post;
    }
    $categories = $this->pdo
        ->query('SELECT c.* , PC.post_id
               FROM post_category pc
               JOIN category c ON c.id = pc.category_id
               WHERE pc.post_id IN  ('.implode(',', array_keys($postsByID)) . ')'
            )->fetchAll(PDO::FETCH_CLASS, $this->class);

    foreach ($categories as $category){
        $postsByID[$category->getPostID()]->addCategory($category);
    }
}

public function all(): array{
    return $this->queryAndFetchAll("SELECT * FROM {$this->table} ORDER BY id DESC");

}"

Ce que j'obtiens
[{
"resource": "/c:/wamp64/www/blog/src/Table/categoryTable.php",
"owner": "_generated_diagnostic_collectionname#0",
"code": "1013",
"severity": 8,
"message": "Undefined method 'queryAndFetchAll'.",
"source": "intelephense",
"startLineNumber": 35,
"startColumn": 23,
"endLineNumber": 35,
"endColumn": 39
}]

1 réponse


Salut,

"$this" retourne un élement de la classe elle-même.
Quand tu fais $this->queryAndFetchAll
Il va tenter t'appeler t'a méthode dans la classe CatégoryTable.
Hors vu le code que tu nous montre. Il semble ne pas y être.

C'est bien écrit dans ton message d'erreur.