sql >> Base de Datos >  >> RDS >> Mysql

OpenCart:cómo completar con precisión oc_category_path

Si una categoría en su tienda oc es una categoría raíz, obtiene una entrada en la tabla de ruta como "category_id,category_id,0". Si esa categoría tiene un hijo, obtendrá dos entradas en la tabla, a saber:-"category_id ,category_id,1" así como "category_id,parent_id,0".

Si ese hijo tiene su propio hijo, ese nuevo hijo tendrá tres entradas como tales:-
"category_id,category_id,2"
"category_id,parent_id,1"
"category_id,parents id_categoría padre,0"

Para ilustrar esto, suponga que una categoría tiene un id_categoría de "14". Es el primer hijo de una categoría con un id_categoría de "11". Esa categoría, con el id_categoría de "11" es el hijo de una categoría con la categoría identificación de "1". (1>11>14 como se muestra en el panel de administración, excepto con el nombre en lugar de category_id)

Lo anterior tendrá 3 entradas como tales:
"14","14","2"
"14","11","1"
"14","1" ,"0"

Entonces, la categoría raíz obtendrá 0, la siguiente obtendrá 1, y la siguiente 2, y así sucesivamente, todo dependiendo de cuántos niveles de categoría tenga.

Espero que eso explique las cosas lo suficientemente bien.

En cuanto a llenarlo, el método más simple, pero no un método completo, es simplemente crear la tabla con "category_id,category_id,0". Esto hará que aparezcan en el panel de administración. Si luego hace clic en "reparar", generará esta tabla correctamente.

Alternativamente, tendría que recorrer su tabla de categorías, creando una matriz con su parent_id, buscando ese parent_id para su parent_id y agregándolo a la matriz, y así sucesivamente. Cuando la matriz esté completa, es decir, no haya más padres, será una tarea sencilla agregarlos a la tabla con el "nivel" correcto.

FYI, hay otra tabla que también debe completarse, category_to_store, que es muy simple "category_id, store_id". Sin esta tabla no verá sus categorías en su tienda.