PHP

【Laravel】ルーティングが動いてない??

ルーティングが動いてない??

僕がハマった事例

僕は、以下のコードでエラーが出ないのにデータを取得できない、という現象でハマってました。

やりたかったことは、getBooksBorroedメソッドを動かして、ユーザーが持っている本を返したかったんです。

// idから本を返す
Route::get("/books/{id}", "BooksController@show");
// 借りている本を返す
Route::get("/books/borrowed", "BooksController@getBooksBorrowed");

コントローラの記述と間違ってるんじゃないの?、全角になってるんじゃないの?とか、もう色々調べたり確認したりしました。

結論から言うと、ここに原因があります。

Laravelでのルーティングは上の記述が優先される

上のサブタイトルにもありますが、Laravelでは上に記述したルーティングの方が優先されます。

ん?でもパスは同じじゃないよね、と思った方もいるかもしれません、、、。

確認して欲しいことは2つあって、

・先頭が、/booksで同じであること

・上のパスは、/booksに続いて、{id}というパラメータを持っていること

今回の事例でいうと、

/books/borrowedを呼びたいのに、/books/{id}が優先されてしまったのが原因です。

COMMENT

メールアドレスが公開されることはありません。