Position actuelle: Accueil> Derniers articles> Laravel 7 Méthodes de mise en œuvre de la classification de niveau infini et meilleures pratiques

Laravel 7 Méthodes de mise en œuvre de la classification de niveau infini et meilleures pratiques

gitbox 2025-06-28

introduire

Laravel est un cadre de développement PHP populaire qui offre de nombreuses fonctionnalités puissantes, y compris des niveaux de classification illimités. La classification du niveau infini est une méthode d'organisation des données dans une structure d'arbre où chaque nœud peut avoir un nombre infini de nœuds enfants. La classification illimitée est courante dans de nombreuses applications, telles que la classification des nouvelles, la classification des produits, etc.

Méthode d'implémentation

Conception de la table de base de données

Pour implémenter la classification de niveau infini, nous devons d'abord concevoir des tables de base de données. Une méthode de conception courante consiste à utiliser deux champs: id et parent_id. Le champ ID est utilisé pour identifier de manière unique chaque nœud, et le champ Parent_ID est utilisé pour indiquer le nœud parent du nœud. Le parent_id du nœud racine est généralement 0.

 CREATE TABLE categories (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    parent_id INT DEFAULT 0
);

Dans cet exemple, nous créons une table de catégorie avec ID, nom et champs parent_id. Le champ ID est une clé principale qui augmente automatiquement, le champ Nom est utilisé pour stocker le nom de la classification et le champ Parent_ID est utilisé pour stocker l'ID du nœud parent.

Requête de base de données

Pour obtenir toutes les sous-catégories d'une catégorie spécifiée, nous pouvons utiliser des requêtes récursives. Voici un exemple de code pour la requête récursive à l'aide de l'ORM éloquent de Laravel:

 class Category extends Model
{
    public function children()
    {
        return $this->hasMany(Category::class, 'parent_id', 'id');
    }

    public function descendants()
    {
        return $this->children()->with('descendants');
    }
}

Dans cet exemple, nous définissons les méthodes d'association des enfants et des descendants du modèle de catégorie. La méthode des enfants renvoie toutes les sous-classes directes de la classification actuelle et la méthode des descendants renvoie tous les descendants de la classification actuelle.

Liste des catégories d'affichage

Pour afficher une liste de classification dans une vue, nous pouvons utiliser une vue récursive. Voici un exemple de code utilisant le moteur de modèle de lame:

 @foreach ($categories as $category)
    {{ $category->name }}
    @if ($category->children->count())
        @include('categories.partial.list', ['categories' => $category->children])
    @endif
@endforeach

Dans cet exemple, nous utilisons la balise @ForEach pour afficher la liste de classification. Pour chaque catégorie, nous montrons d'abord le nom de la catégorie, puis vérifions s'il y a des sous-catégories. S'il y a une sous-classe, nous utilisons la directive @include pour introduire une vue partielle et y passer la sous-classe.

en conclusion

Cet article présente la méthode pour implémenter la classification de niveau infini dans le cadre Laravel. Nous avons d'abord conçu une table de base de données pour stocker les informations de classification, nous avons ensuite utilisé l'éloquent ORM pour la requête récursive, et avons finalement utilisé le moteur de modèle de lame pour afficher la liste de classification. La classification de niveau infini est une caractéristique très pratique qui peut nous aider à mieux organiser et gérer les données.