Php 如何使用laravel将数据从数据库检索到树视图
我的要求是使用数据库值构建treeview 以下是我的数据库表: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
| 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
你从哪里得到这个想法的?不管怎样,请参见中的答案