2016-11-14 59 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"); 

我知道我应该用口才来实现这一点,但语法尚不清晰。