Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

OpenCart:Como preencher com precisão oc_category_path


Se uma categoria em sua loja oc for uma categoria raiz, ela obterá uma entrada na tabela de caminhos como "category_id,category_id,0".se essa categoria tiver um filho, ela obterá duas entradas na tabela, a saber:-"category_id ,category_id,1" bem como "category_id,parent_id,0".

Se esse filho tiver um filho próprio, esse novo filho terá três entradas como:-
"category_id,category_id,2"
"category_id,parent_id,1"
"category_id,parents pai category_id,0"


Para ilustrar isso, suponha que uma categoria tenha um category_id de "14". É o primeiro filho de uma categoria com um category_id de "11". Essa categoria, com o category_id de "11" é o filho de uma categoria com a categoria identificação de "1". (1>11>14 como mostrado no painel de administração, exceto com o nome em vez do category_id)

O acima terá 3 entradas como tal:
"14","14","2"
"14","11","1"
"14","1" ,"0"


Assim, a categoria raiz para ela receberá 0, a próxima receberá 1, e a próxima 2, e assim por diante, tudo dependendo de quantos níveis de categoria estiver abaixo.

Espero que isso explique bem as coisas.

Quanto a preenchê-lo, o método mais simples, mas não completo, é apenas criar a tabela com "category_id,category_id,0". Isso fará com que eles apareçam no painel de administração. Se você clicar em "reparar" irá gerar esta tabela corretamente.

Alternativamente, você teria que percorrer sua tabela de categorias, criando um array com seu parent_id, procurando esse parent_id por seu parent_id e adicionando-o ao array e assim por diante. Quando o array estiver completo, ou seja, sem mais pais, será uma tarefa simples adicioná-los à tabela com o "nível" correto.

Para sua informação, há outra tabela que também precisa ser preenchida, category_to_store, que é simplesmente "category_id,store_id". Sem esta tabela você não verá suas categorias em sua loja.