我使用的是Laravel 5.6。我坚持以下。我的类别模型的结构如下。
id | name | cat_parent_id | slug
--- | ------------------| ------------- | -------------
1 | Parent - 1 | NULL | parent-1
2 | Parent - 2 | NULL | parent-2
3 | Child-1- P - 1 | 1 | ch-1-p-1
4 | Child-1- P - 2 | 2 | ch-1-p-2
5 | sCh-1-Ch-1-P- 2 | 4 | sch-1-ch-1-p-2
为了获得子关系,我在kblinked \ Category模型上使用了以下方法。
public function children()
{
return $this->hasMany('kblinked\Category', 'cat_parent_id', 'id');
}
在我的控制器中,
public function category(Category $category)
{
$categories = $category->first()->children;
return view('product.list', compact('categories'));
}
这是我的路线
Route::get('/{category?}','ProductController@category');
我可以使用以下代码获取第一个孩子。当我访问网址http://trump.localhost/parent-2
时,它会显示以下内容Child-1- P-2
但是,当我访问http://trump.localhost/parent-2/ch-1-p-2
时,它没有显示任何内容它应该显示以下,但我没有看到它。
sCh-1-Ch-1-P-2
答案 0 :(得分:1)
您必须调整路线:
Route::get('{category1}/{category2?}/{category3?}/{category4?}',
'ProductController@category');
你的控制器:
public function category(Category $category1, Category $category2 = null,
Category $category3 = null, Category $category4 = null) {
$category = collect(func_get_args())->filter()->last();
$categories = $category->children;
return view('product.list', compact('categories'));
}
答案 1 :(得分:0)
在模型中
public function children()
{
return $this->hasMany('kblinked\Category', 'cat_parent_id');
}
在你的控制器中发送参数中的类别id然后找到该类别;
public function category($category) // $category is id of category
{
$category = Category::findOrFail($category);
return view('product.list', compact('categories'));
}
在您的视图中
@foreach($category->children as $child)
{{$child->name}}
@endforeach