Jump to content

Problème sur getSubCategories() dans Category.php


Recommended Posts

Bonjour,

 

J'explique mon problème.

 

Depuis plusieurs mois mon prestashop 1.5.2 fonctionne correctement jusqu'à récemment.

 

Dans le fichier /classes/Category.php à la ligne 535

foreach ($result as &$row) 

J'ai un Warning comme quoi la variable $result n'est pas valide et pour cause elle est à false.

 

La requête sql est pourtant correcte et s'exécute parfaitement sur phpmyadmin : 

SELECT c.*, cl.id_lang, cl.name, cl.description, cl.link_rewrite, cl.meta_title, cl.meta_keywords, cl.meta_description FROM `ps_category` c INNER JOIN ps_category_shop category_shop ON (category_shop.id_category = c.id_category AND category_shop.id_shop = 1) LEFT JOIN `ps_category_lang` cl ON (c.`id_category` = cl.`id_category` AND `id_lang` = 5 AND cl.id_shop = 1 ) LEFT JOIN `ps_category_group` cg ON (cg.`id_category` = c.`id_category`) WHERE `id_parent` = 184 AND `active` = 1 AND cg.`id_group` = 1 GROUP BY c.`id_category` ORDER BY `level_depth` ASC, category_shop.`position` ASC

En debuggant juste après le executeS();

print_r(Db::getInstance(_PS_USE_SQL_SLAVE_));

J'obtiens:

DbPDO Object
(
    [server:protected] => *****
    [user:protected] => *****
    [password:protected] => *****
    [database:protected] => *****
    [is_cache_enabled:protected] => 0
    [link:protected] => PDO Object
        (
        )

    [result:protected] => 
    [last_query:protected] => 
			SELECT c.*, cl.id_lang, cl.name, cl.description, cl.link_rewrite, cl.meta_title, cl.meta_keywords, cl.meta_description
			FROM `ps_category` c
			 INNER JOIN ps_category_shop category_shop
		ON (category_shop.id_category = c.id_category AND category_shop.id_shop = 1)
			LEFT JOIN `ps_category_lang` cl
				ON (c.`id_category` = cl.`id_category`
				AND `id_lang` = 1 AND cl.id_shop = 1 )
			LEFT JOIN `ps_category_group` cg
				ON (cg.`id_category` = c.`id_category`)
			WHERE `id_parent` = 1074
				AND `active` = 1
				AND cg.`id_group` IN (3)
			GROUP BY c.`id_category`
			ORDER BY `level_depth` ASC, category_shop.`position` ASC
		
    [last_cached:protected] => 
)

Ce qui est étonnant c'est que normalement dans [result:protected] il devrait y avoir quelque chose du type (testé sur un autre site Prestashop) :

PDOStatement Object
        (
            [queryString] => "...Dernière requête SQL..."
        )

Alors je ne comprends pas pourquoi le [result:protected] n'est pas renseigné alors que la requête est parfaitement exécutée avec phpmyadmin. Comme le problème est très récent j'ai remis un backup de la base mysql d'il y a 6 jours et le problème est toujours présent.

 

Merci de votre aide.

Link to comment
Share on other sites

Hello,

 

A priori false n'est pas mis en cache ou un truc du genre. Vous n'avez peut être pas la dernière requête en fait.

 

Honnêtement vous vous galérez, soit vous mettez un if ($result) avant le foreach, soit vous regardez le code actuel, soit essayez de passer en 1.5.6.2 avec le module d'upgrade.

 

Sinon vous pouvez surement avoir la requête en faisant

if (!$result)
d($sql);

Cordialement

Edited by Gregory Roussac (see edit history)
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...