Mysql
 sql >> Base de données >  >> RDS >> Mysql

OpenCart :comment remplir avec précision oc_category_path

Si une catégorie de votre magasin OC est une catégorie racine, elle obtient une entrée dans la table des chemins en tant que telle "category_id,category_id,0". Si cette catégorie a un enfant, elle obtiendra deux entrées dans la table, à savoir :-"category_id ,category_id,1" ainsi que "category_id,parent_id,0".

Si cet enfant a son propre enfant, ce nouvel enfant aura trois entrées en tant que telles :-
"category_id,category_id,2"
"category_id,parent_id,1"
"category_id,parents catégorie parente_id,0"

Pour illustrer cela, supposons qu'une catégorie a un category_id de "14". C'est le premier enfant d'une catégorie avec un category_id de "11". Cette catégorie, avec le category_id de "11" est l'enfant d'une catégorie avec la catégorie identifiant de "1". (1>11>14 comme indiqué dans le panneau d'administration, sauf avec le nom au lieu du category_id)

Ce qui précède aura 3 entrées en tant que telles :
"14","14","2"
"14","11","1"
"14","1" ,"0"

Ainsi, la catégorie racine obtiendra 0, la suivante obtiendra 1, et la suivante 2, et ainsi de suite, tout dépend du nombre de niveaux de catégorie inférieurs.

J'espère que cela explique assez bien les choses.

Quant à la remplir, la méthode la plus simple, mais pas une méthode complète, consiste simplement à créer la table avec "category_id,category_id,0". Cela les fera apparaître dans le panneau d'administration. Si vous cliquez ensuite sur "réparer", cela générera correctement cette table.

Sinon, vous devrez parcourir votre table de catégories, créer un tableau avec son parent_id, rechercher ce parent_id pour son parent_id et l'ajouter au tableau, et ainsi de suite. Lorsque le tableau est complet, c'est-à-dire qu'il n'y a plus de parents, il suffit de les ajouter au tableau avec le "niveau" correct.

Pour votre information, il y a une autre table qui doit également être remplie, category_to_store, qui est très simplement "category_id,store_id". Sans ce tableau, vous ne verrez pas vos catégories dans votre boutique.