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.
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.
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.
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.
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.