2016-11-14 13 views
0

からIDを取得します。Laravel Routes-は、これが私の「親」ルートでURL

Route::resource("services", "ServicesController"); 

それは素晴らしい作品、私は今、仕事に、この「子」ルートを必要としています。次のようなものだ:

Route::resource("services/{id}/reviews", "ReviewsController"); 

アイデアは、それぞれのservice_idのために、私はそのサービスのIDを選択すると、フォームデータと一緒に私のデータベースにそれを持続したが、これは動作しませんでしょうレビューを書くことができるということです。私は次のエラーを取得する:

NotFoundHttpException in RouteCollection.php line 161: 

しかし、次のように私は "子" ルートを作成する場合:

Route::resource("reviews", "ReviewsController"); 

私はのservice_idを意味し、次のエラーを取得欠落しています。

SQLSTATE[HY000]: General error: 1364 Field 'service_reviewed' doesn't have a default value 

URLからservice_idを選択して、それを(私のレビューテーブルの外部キーであるため)データベースに保存すると思うように、以下のルートを(上記のように)動作させるにはどうすればよいですか?

Route::resource("services/{id}/reviews", "ReviewsController"); 
+0

(あなたは 'resource'を使っているので)あなたのルートには完全なAPIが必要ですか、' services/{id}/reviews'のための単純なルートが必要ですか? – GiuServ

答えて

0

以下を行う必要があります。

Route::get("services/{id}/reviews", "[email protected]"); 

、あなたは前に、リソースのルートを定義する必要があります。

0

ご返信いただきありがとうございます。私ReviewsControllerで

Route::resource("services", "ServicesController"); 

Route::resource("services.reviews", "ReviewsController"); 

そして:私は、ルートのネストが答えであることがわかった

public function create($id){ 


    $user_service = User_service::findOrFail($id); 

    return view ("reviews.create")->withUser_service($user_service); 


} 

しかし、それは私の作成ビューで特定のURLを伴う必要がありました:

{{ Form::open(['route' => ['services.reviews.store', $user_service->id]]) }} 

今私を悩ましているのは、ストアメソッドです。私はuser_service_id(idは)私のレビューのテーブルの外部キーであるので、それにidパラメータを渡す必要があります。

public function store(ReviewsRequest $request, $id){ 


    $service_review = new Service_review($request->all()); 

    \Auth::user()->service_reviews()->save($service_review);   

    return redirect("reviews"); 

私はこれを達成するために雄弁を使用する必要があります知っているが、構文はまだ私には明らかではありません。

関連する問題