2016-08-25 11 views
1

私はこの複数のIDが持つルート(Laravel 5.2)

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

のようなURIが最初のidがCATEGORY_IDであり、第二Food_idありたいです。

私のルートがある:\ Detailscontroller

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')); 
} 

しかし、それはアプリケーションの\のHttp \コントローラの引数2が見つからないエラーを与える:: categ():私が持っている

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

とコントローラで誰が問題があるのか​​誰にでも知らせてもらえますか?私はララベルが初めてです。私がしたいのはまずcategory_idに基づいて食品アイテムを示し、次にfood_idに基づいて食品のデチュイルを表示します。

私の見解では、食品の関連するカテゴリを示すために私は

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

を持っており、それは私が、私はどんな食品にクリックしたとき、それはfood_idに基づいて私に詳細を示したいitems.Then食べ物を示しています。ので、私のNXTビューは次のようになります。

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

私はlaravelにも新しく、routeパラメータに疑問符を指定してから、コントローラ内の関数がオプションの1つのカテゴリを指定します($ Category_id = null、$ Food_id = null) –

+0

これは**申し訳ありませんが、あなたが探しているものが見つかりませんでした。** – MANI

答えて

0

アニッシュは、左のコメントは正しかったあなたがnullを搭載したモデルを見つけるためにしようとしているときは、しかし、あなたの主な問題は来ます。彼らはあなたがアクセスしようとしている場合に応じて、あなたのビューファイルで複数のエラーかもしれNB

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')); 
} 

:この問題を回避するには、のようなものを持つことができます。

しかし、私ははるかに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 
} 

、その後だけであなたのFoodsためのコントローラをshow()方法:

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

ORあなたはクーロンアップあなたのルートを設定する方法に応じて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]'); 

明らかに、上記は単なる例であり、コントローラ/ルートを好きなように設定することができます。 https://laravel.com/docs/5.2/routing#route-model-binding

・ホープこのヘルプ:あなたは(推奨)RESTfulなルートを下って行く終わる行う場合

あなたがして見たいかもしれません!

関連する問題