質問: aa limit 1 が入ってくるため、idを正しく取得できず、psqlエラーが表示されます。 そこで、/hoge/1/editのようにURLに直打ちしたとして、 その1という値がデータベース上のidカラムに存在する場合はViewを返し、 存在しない場合は全てabort 404などするといったことをしたいのですが、 これはroute.phpに書くべき内容なのでしょうか? また、書く場合にどのような条件分岐を書くと期待動作をするのかを教えて頂けますと幸いです。 どうぞよろしくお願いいたします。 追記 以下のようにすることで、期待動作をすることが可能だということがわかりました。 Route::get('/hoge/{hoge}/edit','TestsController@edit')->name('hoge.edit')->where('hoge','[0-9]+'); ということは、storeやupdateメソッドなどもこれで全部where文を書いていけば一旦問題は解決な訳ですが、これを次のようにResourceで使いたいです。 Route::resource('/hoge', 'TestsController')->where('hoge','[0-9]+'); しかし、これだとCall to a member function where() on nullと表示され、期待動作をしません。 おそらくindexにはidにあたる数値が入ってこないためこのエラーが発生しているものと思われます。 そこで、resourceを使うけどwhere文はindexのみを除外する、といった記述は可能でしょうか? やっぱりgetやpostをいちいち全部書かないとダメでしょうか?
回答: 自己解決しました。 どうやらResourceメソッドやControllerメソッドではWhereメソッドを使用することができないようですが、Patternメソッドは使用することができるようです。 なので以下のような正規表現を使用することで対応しました。 ``` Route::get('/hoge/{hoge}/delete','TestsController@delete')->name('hoge.delete')->where('hoge','[0-9]+'); Route::pattern('hoge', '\d+'); // 数字のみを許可。[0-9]+と同じ Route::resource('/hoge', 'TestsController'); ```