首页 > 作文

使用 Laravel Eloquent 的 hasMany 来开发无限极分类

更新时间:2023-04-08 16:19:55 阅读: 评论:0

在网上商城上,我们经常可以看到多级分类、子分类、甚至无限极分类。本文将向你展示如何优雅的通过 laravel 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’),因此只要当前子类别中有类别,模板就会递归地加载子类别。

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

更多学习内容请访问:

腾讯t3-t4标准精品php架构师教程目录大全,只要你看完保证薪资上升一个台阶(持续更新)

本文发布于:2023-04-08 16:19:53,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/bad8721e8a49d9a538a32fc7b01de2ae.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:使用 Laravel Eloquent 的 hasMany 来开发无限极分类.doc

本文 PDF 下载地址:使用 Laravel Eloquent 的 hasMany 来开发无限极分类.pdf

标签:递归   类别   视图   加载
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图