簡體   English   中英

Laravel路線-從網址獲取ID

[英]Laravel Routes- Get id from 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");

你需要:

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

並且需要資源路由之前定義它。

謝謝你們的回答。 我發現路由嵌套就是答案:

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


}

但這必須在我的create視圖中隨附一個特定的URL:

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

現在困擾我的是store方法。 我需要將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來實現這一目標,但語法尚不清楚。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM