概述
我们会创建一个微型项目来展示儿童商店的分类,总共有 5 级,如下:
数据库迁移
简单的数据表结构:
只有一个 name 字段, 关联到其自身。所以,大部分父级分类 category_id = null,每一个子分类都有一个 parent_id
数据表数据如下:
eloquent 模型和关联关系
首先,在 app/category.php 创建一个简单的 hasmany() 方法, 分类可能拥有其自分类:
好戏开场 本文最妙 “计策”。你知道可以向这样描述 递归 关系吗?如下:
因此,如果调用 category::with(‘categories'),将得到下级 “子分类”,但是通过 category::with(‘childrencategories') 将能帮你实现无限极。
路由和控制器方法
现在,让我们尝试显示所有类别和子类别,如上例所示。
在 routes/web.php,我们添加以下内容:
app/http/categorycontroller.php 如下所示:
我们仅加载父类别,将子类别作为关系。简单吧?
视图和递归子视图
最后,渲染到页面。 在 resources/views/categories.blade.php 文件:
我们先遍历了最*的父类别,然后遍历出父类的子类别,然后使用 @include 加载子类别的子类别......
最好的部分是 resources/views/admin/child_category.blade.php 将使用递归加载自身。看代码:
在 child_category.blade.php 内部,我们包含了 @include(‘child_category'),因此只要当前子类别中有类别,模板就会递归地加载子类别。
就是这样!我们拥有无限级别的子类别 - 无论是在数据库还是关联关系或是视图中
以上就是如何使用laravel eloquent来开发无限极分类的详细内容,更多关于使用laravel eloquent来开发无限极分类的资料请关注服务器之家其它相关文章!
原文链接:https://www.cnblogs.com/a609251438/p/12868914.html