Laravel Routes-从网址

时间:2016-11-14 07:04:04

标签: php laravel-5.3

这是我的父母"路线:

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");

2 个答案:

答案 0 :(得分:0)

你需要:

Route::get("services/{id}/reviews", "ReviewsController@method");

您需要在资源路径之前定义

答案 1 :(得分: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);


}

但是我必须在创建视图中附带特定网址:

{{ 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");

我知道我应该使用Eloquence来实现这一点,但语法尚不清楚。