AI智能
改变未来

如何使用Laravel Eloquent来开发无限极分类


目录
  • 概述
  • 数据库迁移
  • Eloquent 模型和关联关系
  • 路由和控制器方法
  • 视图和递归子视图

概述

我们会创建一个微型项目来展示儿童商店的分类,总共有 5 级,如下:

数据库迁移

简单的数据表结构:

Schema::create(\'categories\', function (Blueprint $table) {$table->bigIncrements(\'id\');$table->string(\'name\');$table->unsignedBigInteger(\'category_id\')->nullable();$table->foreign(\'category_id\')->references(\'id\')->on(\'categories\');$table->timestamps();});

只有一个 name 字段, 关联到其自身。所以,大部分父级分类 category_id = NULL,每一个子分类都有一个 parent_id

数据表数据如下:

Eloquent 模型和关联关系

首先,在 app/Category.php 创建一个简单的 hasMany() 方法, 分类可能拥有其自分类:

class Category extends Model{public function categories(){return $this->hasMany(Category::class);}}

好戏开场 本文最妙 “计策”。你知道可以向这样描述 递归 关系吗?如下:

public function childrenCategories(){return $this->hasMany(Category::class)->with(\'categories\');}

因此,如果调用 Category::with(‘categories\’),将得到下级 “子分类”,但是通过 Category::with(‘childrenCategories\’) 将能帮你实现无限极。

路由和控制器方法

现在,让我们尝试显示所有类别和子类别,如上例所示。

在 routes/web.php,我们添加以下内容:

Route::get(\'categories\', \'CategoryController@index\');

app/Http/CategoryController.php 如下所示:

public function index(){$categories = Category::whereNull(\'category_id\')->with(\'childrenCategories\')->get();return view(\'categories\', compact(\'categories\'));}

我们仅加载父类别,将子类别作为关系。简单吧?

视图和递归子视图

最后,渲染到页面。 在 resources/views/categories.blade.php 文件:

<ul>@foreach ($categories as $category)<li>{{ $category->name }}</li><ul>@foreach ($category->childrenCategories as $childCategory)@include(\'child_category\', [\'child_category\' => $childCategory])@endforeach</ul>@endforeach</ul>

我们先遍历了最顶级的父类别,然后遍历出父类的子类别,然后使用 @include 加载子类别的子类别……

最好的部分是 resources/views/admin/child_category.blade.php 将使用递归加载自身。看代码:

<li>{{ $child_category->name }}</li>@if ($child_category->categories)<ul>@foreach ($child_category->categories as $childCategory)@include(\'child_category\', [\'child_category\' => $childCategory])@endforeach</ul>@endif

在 child_category.blade.php 内部,我们包含了 @include(‘child_category\’),因此只要当前子类别中有类别,模板就会递归地加载子类别。

就是这样!我们拥有无限级别的子类别 – 无论是在数据库还是关联关系或是视图中

以上就是如何使用Laravel Eloquent来开发无限极分类的详细内容,更多关于使用Laravel Eloquent来开发无限极分类的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:

  • laravel5.6 框架操作数据 Eloquent ORM用法示例
  • Laravel 手动开关 Eloquent 修改器的操作方法
  • laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
  • Laravel框架Eloquent ORM新增数据、自定义时间戳及批量赋值用法详解
  • Laravel框架Eloquent ORM简介、模型建立及查询数据操作详解
  • Laravel框架Eloquent ORM修改数据操作示例
  • Laravel Eloquent分表方法并使用模型关联的实现
  • laravel7学习之无限级分类的最新实现方法
  • laravel admin实现分类树/模型树的示例代码
赞(0) 打赏
未经允许不得转载:爱站程序员基地 » 如何使用Laravel Eloquent来开发无限极分类