PHP モール関数チュートリアル: 商品の分類とフィルター機能の実装
PHP モール プロジェクトを開発する場合、商品の分類とフィルター機能は不可欠です。合理的な分類とフィルタリングにより、ユーザーは製品を簡単に見つけて購入できます。この記事では、PHP を使用して商品分類とフィルタリング機能を実装する方法をコード例を添付して詳しく紹介します。
まず、製品分類テーブルと対応するモデル クラスを作成する必要があります。製品分類テーブルには、少なくとも次のフィールドが含まれている必要があります: id、name、parent_id。このうち、id は自動インクリメントされる主キー、name はカテゴリ名、parent_id はカテゴリの親カテゴリ ID です。
次は、製品分類テーブルを作成するコード例です。
CREATE TABLE `categories` ( `id` int(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY, `name` varchar(255) NOT NULL, `parent_id` int(11) DEFAULT NULL, `created_at` timestamp NULL DEFAULT NULL, `updated_at` timestamp NULL DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
次に、Category モデル クラスを作成し、対応する関係とメソッドを定義します。以下はコード例です:
<?php namespace AppModels; use IlluminateDatabaseEloquentModel; class Category extends Model { protected $fillable = ['name', 'parent_id']; public function parent() { return $this->belongsTo(Category::class, 'parent_id'); } public function children() { return $this->hasMany(Category::class, 'parent_id'); } }
モールのフロント ページでは、わかりやすくするために製品カテゴリをツリー構造で表示する必要があります。ユーザーは分類を参照して選択します。コード例を次に示します。
<?php use AppModelsCategory; function displayCategories($categories, $parent_id = 0) { echo '<ul class="category-list">'; foreach ($categories as $category) { if ($category->parent_id == $parent_id) { echo '<li>'; echo $category->name; $children = $category->children; if (count($children) > 0) { displayCategories($children, $category->id); } echo '</li>'; } } echo '</ul>'; } $categories = Category::all(); displayCategories($categories);
<?php use AppModelsProduct; function getFilteredProducts($filters) { $query = Product::query(); if (isset($filters['price'])) { $query->whereBetween('price', [$filters['price']['min'], $filters['price']['max']]); } if (isset($filters['color'])) { $query->whereIn('color', $filters['color']); } // 添加其他筛选条件 $products = $query->get(); return $products; } // 获取用户提交的筛选条件 $filters = $_POST['filters']; // 调用筛选函数获取符合条件的商品 $products = getFilteredProducts($filters);
以上がPHPモール関数チュートリアル:商品分類とフィルタリング関数の実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。