sql >> Databasteknik >  >> RDS >> Mysql

OpenCart:Hur man exakt fyller i oc_category_path

Om en kategori i din oc-butik är en rotkategori, får den en post i sökvägstabellen som sådan "category_id,category_id,0". om den kategorin har ett barn får den två poster i tabellen, nämligen :-"category_id ,category_id,1" såväl som "category_id,parent_id,0".

Om det barnet har ett eget barn, kommer det nya barnet att ha tre poster som sådana:-
"category_id,category_id,2"
"category_id,parent_id,1"
"category_id,parents parent category_id,0"

För att illustrera detta, anta att en kategori har kategori_id på "14". Det är det första barnet i en kategori med kategori_id på "11". Den kategorin, med kategori_id för "11" är barnet i en kategori med kategorin id för "1". (1>11>14 som visas i administratörspanelen, förutom med namnet istället för kategori_id)

Ovanstående kommer att ha 3 poster som sådana:
"14","14","2"
"14","11","1"
"14","1" ,"0"

Så rotkategorin till den kommer att få 0, nästa får 1, och nästa 2, och så vidare, allt beroende på hur många kategorinivåer ner det är.

Jag hoppas att det förklarar saker och ting tillräckligt bra.

När det gäller att fylla i den är den enklaste metoden, men inte en komplett metod, att bara skapa tabellen med "category_id,category_id,0". Detta kommer att få dem att dyka upp i adminpanelen. Om du sedan klickar på "reparera" kommer den här tabellen att genereras korrekt.

Alternativt skulle du behöva gå igenom din kategoritabell, skapa en array med dess parent_id, leta upp det parent_id för dess parent_id och lägga till det i arrayen, och så vidare. När arrayen är klar, dvs inga fler föräldrar, blir det en enkel uppgift att lägga till dem i tabellen med rätt "nivå".

FYI, det finns en annan tabell som också behöver fyllas i, kategori_till_butik, som mycket enkelt är "category_id, store_id". Utan denna tabell kommer du inte att se dina kategorier i din butik.




  1. Hur frigör man eventuella Postgres radlås?

  2. Allvarligt fel:Vänligen läs avsnittet Säkerhet i manualen för att ta reda på hur du kör mysqld som root

  3. Ingen lämplig drivrutin hittades för jdbc:postgresql://192.168.1.8:5432/NexentaSearch

  4. slå samman två tabeller tillsammans med antalet poster från den andra tabellen baserat på tillstånd