Salut la communauté en espérant que vous aller tous bien...
J'ai un soucis au niveau d'un projet je sais pas ou est le soucis.
je voulais refactoring la page category de
mon projet un peux histoir d'alleger le projet un peux
Voila le code
$id = (int)$params['id'];
$slug = $params['slug'];
/* --- CATEGORY --- */
$pdo = Db::getPDO();
$query = $pdo->prepare('SELECT * FROM category WHERE id = :id');
$query->execute(['id' => $id]);
$query->setFetchMode(PDO::FETCH_CLASS, Category::class);
$category = $query->fetch();
/** @var Category |false */
if($category === false){
throw new \Exception("Aucun article ne correspond pas");
}
if($category->getSlug() !== $slug){
$url = $router->url('category', ['slug' => $category->getSlug(), 'id' => $id]);
http_response_code(301);
header('Location: ' . $url);
}
/* --- LISTE ---*/
$query = $pdo->prepare('
SELECT *
FROM sous_categorys s
JOIN category c ON s.cates_id = c.category_prod
WHERE s.cates_id = c.category_prod
');
$query->execute(['id' => $category->getId()]);
$query->setFetchMode(PDO::FETCH_CLASS, Categories_link::class);
$categories_link = $query->fetchAll();
/* --- NAME CAT --- */
$title = "{$category->getName()}";
/* --- PAGINATION --- */
$paginatedQuery = new PaginatedQuery(
"SELECT p.*
FROM product p
JOIN product_category pc ON pc.product_id = p.id
WHERE pc.category_id = {$category->getID()}
ORDER BY created_at DESC",
"SELECT COUNT(category_id) FROM product_category WHERE category_id = {$category->getID()}"
);
$products = $paginatedQuery->getItems(Product::class);
dd($products);
La page des parametre et les methodes
namespace App;
use \PDO;
class PaginatedQuery{
private $query;
private $queryCount;
private $classMapping;
private $pdo;
private $perPage;
public function construct(
string $query,
string $queryCount,
string $classMapping,
?\PDO $pdo = null,
int $perPage = 12
)
{
$this->query = $query;
$this->queryCount = $queryCount;
$this->classMapping = $classMapping;
$this->pdo = $pdo ?: Db::getPDO();
$this->perPage = $perPage;
}
public function getItems(): array
{
$currentPage = URL::getPositiveInt('page', 1);
$count = (int)$this->pdo
->query($this->queryCount)
->fetch(PDO::FETCH_NUM)[0];
$pages = ceil($count / $this->perPage);
if($currentPage > $pages){
throw new \Exception('Cette page n\'existe pas');
}
$offset = $this->perPage * ($currentPage - 1);
return $this->pdo->query(
$this->query .
" LIMIT {$this->perPage} OFFSET $offset")
->fetchAll(PDO::FETCH_CLASS, $this->classMapping);
}
}
Voila l'erreur que je reçois, je comprends pas du tout le probeme
Call to a member function query() on null
Veuillez m'aider a comprendre svp
Merci