現在の位置: ホーム> 最新記事一覧> LARAVEL 7 INFINITEレベル分類の実装方法とベストプラクティス

LARAVEL 7 INFINITEレベル分類の実装方法とベストプラクティス

gitbox 2025-06-28

導入

Laravelは、無制限のレベルの分類を含む多くの強力な機能を提供する人気のあるPHP開発フレームワークです。無限レベル分類は、各ノードが無限の数の子ノードを持つことができるツリー構造にデータを整理する方法です。無制限の分類は、ニュース分類、製品分類など、多くのアプリケーションで一般的です。

実装方法

データベーステーブル設計

無限レベルの分類を実装するには、最初にデータベーステーブルを設計する必要があります。一般的な設計方法は、idとparent_idの2つのフィールドを使用することです。 IDフィールドは、各ノードを一意に識別するために使用され、parent_idフィールドはノードの親ノードを示すために使用されます。ルートノードの親_IDは通常0です。

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

この例では、ID、名前、およびparent_idフィールドを備えたカテゴリテーブルを作成します。 IDフィールドは自動的に増加する主要なキーであり、名前フィールドは分類の名前を保存するために使用され、親ノードのIDを保存するためにParent_IDフィールドが使用されます。

データベースクエリ

指定されたカテゴリのすべてのサブカテゴリを取得するには、再帰クエリを使用できます。 Laravelの雄弁なORMを使用した再帰クエリのサンプルコードは次のとおりです。

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

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

この例では、カテゴリモデルの子供と子孫の協会の方法を定義します。 Children Methodは、現在の分類のすべての直接サブクラスを返し、子孫メソッドは現在の分類のすべての子孫を返します。

カテゴリリストを表示します

ビューで分類リストを表示するには、再帰ビューを使用できます。ブレードテンプレートエンジンを使用したサンプルコードは次のとおりです。

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

この例では、@Foreachタグを使用して分類リストを表示します。各カテゴリについて、最初にカテゴリの名前を表示し、次にサブカテゴリがあるかどうかを確認します。サブクラスがある場合は、@includeディレクティブを使用して部分的なビューを導入し、サブクラスを渡します。

結論は

この記事では、Laravelフレームワークに無限レベルの分類を実装する方法を紹介します。最初に、分類情報を保存するデータベーステーブルを設計し、次に再帰クエリに雄弁ORMを使用し、最後にブレードテンプレートエンジンを使用して分類リストを表示しました。 Infiniteレベルの分類は、データをより適切に整理および管理するのに役立つ非常に実用的な機能です。