Heim  >  Artikel  >  Datenbank  >  Wie konvertiere ich Datenbankergebnisse in hierarchische Array-Objekte?

Wie konvertiere ich Datenbankergebnisse in hierarchische Array-Objekte?

Barbara Streisand
Barbara StreisandOriginal
2024-11-06 17:04:03649Durchsuche

How to Convert Database Results into Hierarchical Array Objects?

Datenbankergebnisse in hierarchische Array-Objekte konvertieren

Implementieren einer auf Abschlusstabellen basierenden Hierarchie

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.

Hierarchische Daten abfragen

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;

Abfrageergebnisse verarbeiten

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.

Benutzerdefinierte Zeilenobjekte

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.

toArrayDeep()-Methode

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 .

Beispielverwendung

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());

Zusätzlich Hinweise

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn