Jump to content

Category : redondance d'accés à la BDD pour les sous categories.


Recommended Posts

Bonjour,

 

La fonction getSubCategories() appelée pour le controller "category" renvoie un tableau des sous catégories avec les noms, link rewrite et méta données.

 

Dans le tpl la fonction getCategoryLink() appelée pour chaque sous categorie teste si le paramètre category est un identifiant, ou un objet, mais ne teste pas s'il s'agit d'un tableau.

 

Dans category.tpl, c'est l'identifiant qui est passé en paramètre. par conséquence la fonction getCategoryLink() est appelée deux fois pour chaque sous catégorie (une fois pour le nom et une fois pour l' image).

 

A chaque appel, il y a instanciation d'un objet catégorie et accès à la BDD pour aller rechercher des informations qui existent déjà dans le tableau renvoyé par getSubCategories().

 

Il faudrait ajouter dans link.php la possibilité de passer un tableau de valeurs et pas seulement un objet.

ou utiliser la conversion en objet dans getSubCategories().

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

Dans la classe category.php, dans la fonction getLinkRewrite()

 

Pour des raisons de performance, dans cette requête, une seule table est utile au lieu de deux !

 

   	 SELECT cl.`link_rewrite`
	FROM `'._DB_PREFIX_.'category` c
	LEFT JOIN `'._DB_PREFIX_.'category_lang` cl
	    ON c.`id_category` = cl.`id_category`'.Shop::addSqlRestrictionOnLang('cl').'
	WHERE `id_lang` = '.(int)$id_lang.'
	AND c.`id_category` = '.(int)$id_category);

 

la table category, n'est pas utile

 

   	 SELECT cl.`link_rewrite`
	FROM `'._DB_PREFIX_.'category_lang` cl
  	 WHERE `id_lang` = '.(int)$id_lang.'
   '.Shop::addSqlRestrictionOnLang('cl').'
	AND c.`id_category` = '.(int)$id_category);

Edited by chantane (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...