Mysql
 sql >> Database >  >> RDS >> Mysql

OpenCart:come popolare accuratamente oc_category_path

Se una categoria nel tuo negozio oc è una categoria radice, ottiene una voce nella tabella del percorso come "id_categoria,id_categoria,0".se quella categoria ha un figlio riceverà due voci nella tabella, vale a dire :-"id_categoria ,category_id,1" così come "category_id,parent_id,0".

Se quel bambino ha un suo figlio, quel nuovo figlio avrà tre voci come tali:-
"category_id,category_id,2"
"category_id,parent_id,1"
"category_id,parents parent category_id,0"

Per illustrare ciò, supponiamo che una categoria abbia un category_id di "14". È il primo figlio di una categoria con un category_id di "11". Quella categoria, con category_id di "11" è il figlio di una categoria con la categoria id di "1". (1>11>14 come mostrato nel pannello di amministrazione, tranne che con il nome al posto della categoria_id)

Quanto sopra avrà 3 voci come tali:
"14","14","2"
"14","11","1"
"14","1" ,"0"

Quindi la categoria principale ad esso otterrà 0, quella successiva 1 e la successiva 2 e così via, tutto a seconda di quanti livelli di categoria sono inferiori.

Spero che questo spieghi le cose abbastanza bene.

Per quanto riguarda il popolamento, il metodo più semplice, ma non completo, è semplicemente creare la tabella con "category_id,category_id,0". Questo li farà apparire nel pannello di amministrazione. Se poi fai clic su "ripara" verrà generata correttamente questa tabella.

In alternativa, dovresti scorrere la tabella delle categorie, creare un array con il suo parent_id, cercare quel parent_id per il suo parent_id e aggiungerlo all'array e così via. Quando l'array sarà completo, cioè non ci saranno più genitori, sarà semplice aggiungerli alla tabella con il "livello" corretto.

Cordiali saluti, c'è anche un'altra tabella che deve essere popolata, category_to_store, che è semplicemente "category_id,store_id". Senza questa tabella non vedrai le tue categorie nel tuo negozio.