Um hierarchische Daten effizient darzustellen, sollten Sie die Verwendung einer Abschlusstabelle in Betracht ziehen. In diesem Zusammenhang verwaltet eine Abschlusstabelle die Beziehungen zwischen Vorfahren und Nachkommen einer Baumstruktur und ermöglicht so das effiziente Abrufen und Darstellen der Hierarchie.
Um die Baumstruktur abzufragen, haben wir kann eine SQL-Abfrage ausführen, die die Nachkommen eines bestimmten Knotens zusammen mit ihren Ebenen in der Hierarchie abruft. Hier ist eine Beispielabfrage, die Nachkommen bis zu einer bestimmten Ebene abruft:
SELECT d.*, p.a AS '_parent' FROM longnames AS a JOIN closure AS c ON (c.a = a.tsn) JOIN longnames AS d ON (c.d = d.tsn) LEFT OUTER JOIN closure AS p ON (p.d = d.tsn AND p.l = 1) WHERE a.tsn = ? AND c.l <= ? ORDER BY c.l;
Sobald die Abfrageergebnisse abgerufen wurden, können wir sie verarbeiten, um eine hierarchische Array-Struktur zu erstellen. Dazu gehört das Sortieren der Zeilen nach Hierarchie und das entsprechende Gruppieren, wodurch ein Array mit Knoten als Objekten mit Daten und untergeordneten Arrays erstellt wird.
Um die Array-Struktur zu verbessern, können wir erstellen benutzerdefinierte Row-Objekte, die ein assoziatives Array von Zeilendaten zusammen mit einem Rowset-Objekt für ihre untergeordneten Elemente enthalten. Das untergeordnete Rowset für Blattknoten ist leer.
Benutzerdefinierte Klassen können auch Methoden wie toArrayDeep() enthalten, die ihren Dateninhalt rekursiv in ein einfaches Array konvertieren und so einen einfachen Datenexport ermöglichen .
Um dieses System zu verwenden, könnte man zunächst eine Instanz des Taxonomietabellen-Datengateways abrufen und dann die gewünschte Baumstruktur abrufen:
// Get an instance of the taxonomy table data gateway $tax = new Taxonomy(); // Query tree starting at Rodentia (id 180130), to a depth of 2 $tree = $tax->fetchTree(180130, 2); // Dump out the array var_export($tree->toArrayDeep());
Um die Tiefe jedes Pfads zu bestimmen, können Sie neue Knoten in die Abschlusstabelle einfügen und dabei die entsprechende Ebene basierend auf ihrer Hinzufügung in der Hierarchie berechnen. Die Funktion LAST_INSERT_ID() kann nützlich sein, um die ID neu eingefügter Knoten zu erhalten.
Das obige ist der detaillierte Inhalt vonWie konvertiere ich Datenbankergebnisse in hierarchische Array-Objekte?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!