2016-11-14 52 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 

我怎麼能得到這條路線下面(如上所示)工作,因爲我認爲它會從網址中選擇service_id並將其保存到我的數據庫(因爲它是我的評論表中的外鍵)以及表單數據:

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

您是否需要爲您的路線提供完整的API(因爲您正在使用'resource'),或者您需要一條單獨的路線來提供服務/ {id}/reviews'? – GiuServ

回答

0

您需要:

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

,你需要之前你的資源途徑來定義它

0

感謝您的回覆傢伙。我發現這條路嵌套就是答案:

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

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

然後在我的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]]) }} 

現在有什麼讓我煩惱的是商店的方法。我需要id參數傳遞到它,因爲user_service_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"); 

我知道我應該用口才來實現這一點,但語法尚不清晰。