• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    如何使用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'),因此只要当前子类别中有类别,模板就会递归地加载子类别。

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

    以上就是如何使用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实现分类树/模型树的示例代码
    上一篇:如何从防护角度看Thinkphp历史漏洞
    下一篇:分析五个Laravel Dusk的使用技巧
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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