2016-08-25 59 views
1

我想要一个URI这样路线与多个标识的(Laravel 5.2)

http://localhost:8000/category/1/3

第一个ID是CATEGORY_ID和第二是Food_id。

我的路线是:

Route::get('category/{Category_id?}/{Food_id?}', '[email protected]'); 

而且在控制我有:

public function categ($Category_id,$Food_id) 
{ 
    $category = Categories::with('food')->findOrFail($Category_id); 
    $food = Food::with('restaurant','categories')->findOrFail($Food_id); 
    return view('category', compact('category','food')); 
} 

但它给错误缺少参数2为App \ HTTP \ \控制器:: Detailscontroller CATEG()任何人都可以告诉问题在哪里。我是laravel的新手。我想要做的是首先根据category_id显示食物,然后根据food_id显示食物的deatails。

有关说明食品相关的类别,在我看来,我有

@foreach ($Category as $categories) 
<a href="category/{{$categories->Category_id}}">{{$categories->CategoryName}} </a> 
@endforeach 

,它显示了我的食物items.Then我想,当我点击任何一个食品项目它为我详细基于food_id。所以我的观点NXT样子:

@foreach ($category->food as $food) 
<a href="category/{{$food->Category_id}}/{{$food->Food_id}}">{{ $food->FoodName }}</a> 
@endforeach 
+0

我也是新的laravel,你在路由参数中指定问号,那么控制器中的函数指定它可选的一个类($ Category_id = null,$ Food_id = null) –

+0

这样显示**对不起,页面你正在寻找无法找到。** – MANI

回答

0

阿尼什留下的评论是正确的,但是,如果您正在尝试与null找到的模型,你主要的问题来了。为了解决这个问题,你可以有这样的:

public function categ($Category_id,$Food_id) 
{ 
     $category = is_null($Category_id) ? []: Categories::with('food')->findOrFail($Category_id); 
     $food = is_null($Food_id) ? [] : Food::with('restaurant','categories')->findOrFail($Food_id); 
     return view('category', compact('category','food')); 
} 

NB他们可能是在您的视图文件的详细错误取决于如果你想访问。

不过,我会更加RESTful方法去:​​

从本质上讲,这意味着有你类别控制器:只需

public function index() { 
    //Code to get all categories (if you have a lot you may want to paginate them) 
} 

public function show($Category_Id) { 
    $category = Categories::with('food')->findOrFail($Category_id); 

    //etc 
} 

,然后控制器为您Foodsshow()方法:

public function show($Food_Id) { 
    $food = Food::with('restaurant','categories')->findOrFail($Food_id); 
} 

或取决于你如何设置你的路线了,你不需经过d还包括类别,以及如果需要(但如果它只是一个one2Many关系可能是多余的),所以你必须

public function show($category_ID, $Food_Id) //etc

你的路线将被设置如下:

Route::get('categories', '[email protected]'); 
Route::get('categories/{$category_id}', '[email protected]'); 

//Assuming you go with the first option - something like: 
Route::get('foods/{$food_id}', '[email protected]'); 

//Assuming you go with the section option for Foods 
Route::get('categories/{$category_id}/{$food_id}', '[email protected]'); 

显然,以上只是一个例子,所以随意设置你控制器/路线你喜欢的方式。

如果你最终涨难跌的REST风格的路线(推荐),然后你可能想看看:https://laravel.com/docs/5.2/routing#route-model-binding

希望这有助于!