2016-08-25 55 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

希望這有助於!