Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用laravel将数据从数据库检索到树视图_Php_Laravel_Laravel 5_Eloquent_Laravel 5.1 - Fatal编程技术网

Php 如何使用laravel将数据从数据库检索到树视图

Php 如何使用laravel将数据从数据库检索到树视图,php,laravel,laravel-5,eloquent,laravel-5.1,Php,Laravel,Laravel 5,Eloquent,Laravel 5.1,我的要求是使用数据库值构建treeview 以下是我的数据库表: | Categories | |sub_categories | | id(pk) | | id(pk) | | cate_name | | sub_cat_name | | route_name | | route_name | |Categories_id(fk)| 我得到了与catego

我的要求是使用数据库值构建treeview

以下是我的数据库表:

|    Categories   |  |sub_categories   |
|     id(pk)      |  |    id(pk)       |
|  cate_name      |  | sub_cat_name    |
| route_name      |  | route_name      |
                     |Categories_id(fk)|
我得到了与categories表相关的类别子类别

这是我的控制器代码:

$treeView = DB::table('categories')
                ->join('sub_categories', 'sub_categories.categories_id', '=', 'categories.id')
                ->get();
以下是*.blade.php中的HTML结构:

@foreach($treeView as $tv)
                <li class="treeview">
                    <a href="#"><i class="fa fa-link"></i> <span>{{ $tv->category_name }}</span> <i
                                class="fa fa-angle-left pull-right"></i></a>
                    <ul class="treeview-menu">
                        <li class=""><a href="#">{{$tv->sub_category_name}}</a></li>
                        <li><a href="#">Update Article</a></li>
                    </ul>
                </li>
            @endforeach
@foreach($treeView as$tv)
  • @endforeach
    但是它不好用。它一次又一次地给出了相同的主类别。。
    有人能推荐一种检索数据的正确方法吗?

    我建议您使用Eloquent,因为它将使代码更简单,并使您将来的生活更轻松

    为表创建模型类:

    class Category extends Illuminate\Database\Eloquent\Model {
      protected $table = 'Categories';
    
      public function subcategories() {
        return $this->hasMany(Subcategory::class, 'Categories_id');
      }
    }
    
    class Subcategory extends Illuminate\Database\Eloquent\Model {
      protected $table = 'sub_categories';
    
      public function category() {
        return $this->belongsTo(Category::class, 'Categories_id');
      }
    }
    
    在控制器中,获取如下数据:

    $treeView = Category::with(['subcategories'])->get();
    
    然后在视图中:

    @foreach($treeView as $category)
      <li class="treeview">
        <a href="#"><i class="fa fa-link"></i> <span>{{ $category->cate_name }}</span> <i class="fa fa-angle-left pull-right"></i></a>
        <ul class="treeview-menu">
          @foreach($category->subcategories as $subcategory)
            <li class=""><a href="#">{{$subcategory->sub_category_name}}</a></li>
          @endforeach
        </ul>
      </li>
    @endforeach
    
    @foreach($treeView作为$category)
    
    • @foreach($category->subcategories作为$subcategory)
    • @endforeach
  • @endforeach

    我可以看到你的分类和子分类有着相同的结构。您可以考虑将它们存储在同一个表中,只需在表中添加<强> PARTYSIDID>强>字段,并将其设置为父类的null和子类别的父ID。

    < P>我建议您使用口才,因为这会使代码更简单,并且将来会使您的生活更容易。

    为表创建模型类:

    class Category extends Illuminate\Database\Eloquent\Model {
      protected $table = 'Categories';
    
      public function subcategories() {
        return $this->hasMany(Subcategory::class, 'Categories_id');
      }
    }
    
    class Subcategory extends Illuminate\Database\Eloquent\Model {
      protected $table = 'sub_categories';
    
      public function category() {
        return $this->belongsTo(Category::class, 'Categories_id');
      }
    }
    
    在控制器中,获取如下数据:

    $treeView = Category::with(['subcategories'])->get();
    
    然后在视图中:

    @foreach($treeView as $category)
      <li class="treeview">
        <a href="#"><i class="fa fa-link"></i> <span>{{ $category->cate_name }}</span> <i class="fa fa-angle-left pull-right"></i></a>
        <ul class="treeview-menu">
          @foreach($category->subcategories as $subcategory)
            <li class=""><a href="#">{{$subcategory->sub_category_name}}</a></li>
          @endforeach
        </ul>
      </li>
    @endforeach
    
    @foreach($treeView作为$category)
    
    • @foreach($category->subcategories作为$subcategory)
    • @endforeach
  • @endforeach

    我可以看到你的分类和子分类有着相同的结构。您可以考虑将它们存储在同一个表中,只需在表中添加<强> PARTYSIDID<强>字段,并将其设置为父类的null和子类别的父ID。

    是否使用口才?型号名称是什么?没有。。我没有使用雄辩的。。。我正在使用Illumb\Support\Facades\DB。我有自己的数据库。。所以我没有使用雄辩的……嗯,这并不是说你不能两者兼得;)请在半天后再查,如果到时候没有人回答,我在电脑前会给你答复。。谢谢我期待着很快收到你的来信……你在用雄辩的语言吗?型号名称是什么?没有。。我没有使用雄辩的。。。我正在使用Illumb\Support\Facades\DB。我有自己的数据库。。所以我没有使用雄辩的……嗯,这并不是说你不能两者兼得;)请在半天后再查,如果到时候没有人回答,我在电脑前会给你答复。。谢谢我期待着尽快收到你的来信…谢谢你的快速回复。。我尝试使用您的代码示例。但它在Builder.php 2003行中给出了错误BadMethodCallException:调用未定义的方法Illumb\Database\Query\Builder::all(),我在app/directory中创建了类别和子类别类,如你所述……我想检查类别是否有子类别,否则请执行其他工作。。我试过了,就像下面一样。但是它没有找到所需的答案。。它有什么问题吗??
    @foreach($category->treeView)if($category->has('subcategories'))
    • @foreach($category->subcategories as$subcategories)
    • @endforeach
    • @endif@endforeach
  • 你从哪里得到这个想法的?无论如何,请看答案,谢谢你的快速回复。。我尝试使用您的代码示例。但它在Builder.php 2003行中给出了错误BadMethodCallException:调用未定义的方法Illumb\Database\Query\Builder::all(),我在app/directory中创建了类别和子类别类,如你所述……我想检查类别是否有子类别,否则请执行其他工作。。我试过了,就像下面一样。但是它没有找到所需的答案。。它有什么问题吗??
    @foreach($category->treeView)if($category->has('subcategories'))
    • @foreach($category->subcategories as$subcategories)
    • @endforeach
    • @endif@endforeach
  • 你从哪里得到这个想法的?不管怎样,请参见中的答案