sql >> Database >  >> RDS >> Mysql

OpenCart:hoe oc_category_path nauwkeurig in te vullen

Als een categorie in uw oc-winkel een hoofdcategorie is, krijgt deze een vermelding in de padtabel als zodanig "category_id,category_id,0".Als die categorie een kind heeft, krijgt deze twee vermeldingen in de tabel, namelijk:-"category_id ,category_id,1" en "category_id,parent_id,0".

Als dat kind een eigen kind heeft, heeft dat nieuwe kind drie items:-
"category_id,category_id,2"
"category_id,parent_id,1"
"category_id,parents bovenliggende categorie_id,0"

Om dit te illustreren, neem aan dat een categorie een category_id van "14" heeft. Het is het eerste kind van een categorie met een category_id van "11". Die categorie, met de category_id van "11" is het kind van een categorie met de categorie ID van "1". (1>11>14 zoals getoond in het admin panel, behalve met de naam in plaats van de category_id)

Het bovenstaande heeft als zodanig 3 vermeldingen:
"14","14","2"
"14","11","1"
"14","1" ,"0"

Dus de hoofdcategorie ernaartoe krijgt 0, de volgende krijgt 1, en de volgende 2, enzovoort, allemaal afhankelijk van het aantal categorieniveaus lager.

Ik hoop dat dat de dingen goed genoeg uitlegt.

Wat het invullen betreft, is de eenvoudigste methode, maar geen volledige methode, om gewoon de tabel te maken met "category_id,category_id,0". Dit zorgt ervoor dat ze verschijnen in het beheerderspaneel. Als u vervolgens op "repareren" klikt, wordt deze tabel correct gegenereerd.

Als alternatief zou je door je categorietabel moeten gaan, een array maken met zijn parent_id, die parent_id opzoeken voor zijn parent_id en deze aan de array toevoegen, enzovoort. Wanneer de array compleet is, dwz geen ouders meer, is het een eenvoudige taak om ze met het juiste "niveau" aan de tabel toe te voegen.

Ter info, er is nog een andere tabel die ook moet worden ingevuld, category_to_store, wat heel eenvoudig "category_id,store_id" is. Zonder deze tabel ziet u uw categorieën niet in uw winkel.




  1. Hoe de FROM_BASE64()-functie werkt in MySQL

  2. Hoe STRCMP() werkt in MariaDB

  3. Toon alleen uren in MYSQL DATEDIFF

  4. Het relationele model