Die Infinitus-Klassifizierung ist eine gemeinsame Klassifizierungsmethode in der Datenverwaltung, die für Szenarien mit mehreren Ebenen und Multi-Subklassen wie Produkt- oder Artikelklassifizierung geeignet ist. In diesem Artikel wird erläutert, wie der vollständige Prozess- und Beispielcode der Infinitus -Klassifizierung im Rahmen des ThinkPhp5 -Frameworks entwirft und implementiert wird.
Die Infinitus-Klassifizierung ermöglicht es einer Klassifizierung, mehrere Unterkategorien zu haben, und jede Unterkategorie kann auch weiterhin über eine eigene Unterkategorie verfügen, um ein Klassifizierungssystem mit Ebenen mit Hals zu bilden. Diese Struktur ist flexibel und bequem für die Verwaltung und Anzeige komplexer Klassifizierungsbeziehungen.
Um die Infinitus -Klassifizierung zu implementieren, müssen Sie eine Klassifizierungstabelle erstellen, die normalerweise die folgenden Felder enthält:
Verwenden Sie in ThinkPhp5 die Modellklasse, um die Klassifizierungsdaten zu betreiben. Das folgende Beispiel definiert das Kategorienmodell und implementiert Methoden, um direkte Unterklassen zu erhalten und alle Unterklassen rekursiv zu erhalten:
namespace app\index\model;
use think\Model;
class Category extends Model
{
// Geben Sie den Tabellennamen an(Wenn die Standardregeln nicht erfüllt sind)
protected $table = 'category';
// Erhalten Sie die direkte Unterkategorie der aktuellen Klassifizierung
public function childrenCategories()
{
return $this->hasMany('Category', 'parent_id', 'id')
->order('id', 'asc');
}
// Rekursiv alle Unterkategorien erhalten,Unterkategorie einschließlich Unterkategorie
public function allChildrenCategories()
{
return $this->childrenCategories()->with('allChildrenCategories');
}
}
Die obige Methode verwendet die Verbindungsmodellfunktion von ThinkPhp, um die hierarchische Klassifizierungsdaten flexibel zu ermöglichen.
Der Controller kann Klassifizierungsinformationen über das Modell abfragen und bedienen. Der Beispielcode erhält die Klassifizierung der ersten Stufe und die Traversal erhält die Unterklasse:
$categories = Category::where('parent_id', 0)->select();
foreach ($categories as $category) {
$childrenCategories = $category->childrenCategories;
// Die Unterklasse kann hier verarbeitet werden
}
Wenn Sie alle Unterkategorien einer bestimmten Kategorie (einschließlich Unterkategorien mit mehreren Ebenen) erhalten müssen, können Sie verwenden:
$allChildrenCategories = $category->allChildrenCategories;
Diese Methode gibt eine Sammlung von assoziativen Modellen zurück, die weiterhin mehr Operationen ausführen können.
In der Ansicht kann die hierarchische Einkleber-Anzeige durch rekursive Funktionen implementiert werden, um mehrstufe Klassifizierungsdaten anzuzeigen:
function renderCategories($categories, $indent = 0)
{
foreach ($categories as $category) {
echo str_repeat(' ', $indent);
echo $category->name . '<br/>';
renderCategories($category->childrenCategories, $indent + 1);
}
}
renderCategories($categories);
Darüber hinaus unterstützt die ThinkPhp5 -Template -Engine eine rekursive Darstellung von Kategorien mit dem Volumen -Tag: Beispiel:
<ul>
{volist name="categories" id="category"}
<li>{$category.name}</li>
{volist name="category.childrenCategories" id="child"}
<ul>
<li>{$child.name}</li>
{include file="category_tree" /}
</ul>
{/volist}
{/volist}
</ul>
Diese Methode ist einfach und leicht zu warten und realisiert rekursive Anzeige der Klassifizierung auf mehreren Ebenen.
Durch vernünftige Datentabellenstruktur, Modellbeziehungsdefinition und rekursive Anzeige kann ThinkPhp5 die Infinite -Klassifizierungsfunktion effizient und flexibel implementieren, um den komplexen Klassifizierungsanforderungen zu erfüllen. Ich hoffe, dass die Einführung und der Beispielcode in diesem Artikel helfen können, dass Sie die Klassifizierung mit mehreren Ebenen in Ihrem Projekt implementieren.