質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

1回答

1681閲覧

[Laravel](1/2)ModelNotFoundException,(2/2)NotFoundHttpException

退会済みユーザー

退会済みユーザー

総合スコア0

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2017/09/04 11:00

編集2017/09/05 13:02

Lara帳
このページを進めています。

(1/2)ModelNotFoundException,(2/2)NotFoundHttpException
No query results for model [App\Article] create
このエラーが返ってきて動作確認が出来ません。

<?php namespace App\Http\Controllers; use App\Article; class ArticlesController extends Controller { public function index() { $articles = Article::all(); return view('articles.index' , compact('articles')); } public function show($id) { $article = Article::findOrFail($id); return view('articles.show' , compact('article')); } public function create() { return view('articles.create'); } }

articles/createのルート部分

| | GET|HEAD | articles/create | | App\Http\Controllers\ArticlesCont roller@create | web |

どう合わせればいいのかわからないのでコマンドプロンプト上の文のままコピーしてしまいました、読みづらくて申し訳ないです。
これを見た限りでは見本通りにhttp://localhost:8000/articles/createにアクセスすれば見られると思うのですが・・・

コントローラーのネームスペース、useの部分の表記が足りないから発生しているエラーなのでしょうか?
お手数おかけして申し訳無いですがご教示ください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ModelNotFoundExceptionはshowでArticle::findOrFailになっているので、$id値でArticleのデータを取得できない場合はModelNotFoundExceptionエラーを発生させます(OrFailの働き)。
よってArticleのDBデータをリクエストに合うように整えてください。
NotFoundHttpExceptionはリクエストがルート定義によって解決できない場合に発生します。「php artisan route:list」でルート定義を確認し、ブラウザ等のアクセスしているURLと一致するかを確認してください。

投稿2017/09/04 11:22

編集2017/09/04 11:23
aro10

総合スコア4106

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/09/04 11:35

php artisan route::list実行しました。 There are no commands defined in the "route:" namespace. Did you mean this? route と出てきたので、定義されてないか呼び出しか受け取りができていないということでしょうか・・・ createの部分を実行したいのですが、 間違っている、あるいは足りない部分が今のところArticleController.phpしか見当たりません・・・。
aro10

2017/09/04 11:40 編集

php artisan route::listではなく、php artisan route:listです(:が一つ多い)。 コマンドの一覧は、php artisan listで見れます。 createは記事中では、以下の定義(5.4では routes/web.phpに記述)によってルート定義とアクションが紐ついているので Route::get('articles/create', 'ArticlesController@create'); ブラウザでのアクセスは、http://xxxxx.dev/articles/createになるかと思います。
退会済みユーザー

退会済みユーザー

2017/09/04 13:15 編集

申し訳ないです、連打してそのまま実行してました。 ブラウザでのアクセスはおっしゃる通りのURLだと思います。(14)で先に作ったshow.blade.phpはちゃんと動作して、そこから変なふうに変えてはいないのですが・・・。 今夜もありがとうございました、お先に失礼します。
退会済みユーザー

退会済みユーザー

2017/09/04 22:02

route:listの部分追記しました。 ArticleのDBデータとリクエストを合わせる、というのが理解できていません。 リクエストというのはArticlesControllerのnamespaceかuseの部分という事でしょうか。 使っているのはsqlite3なのですが、中身の確認もわかっていません・・・。 (中身で作ったのはテーブルだけのはずでした)
aro10

2017/09/04 23:07 編集

リクエストはLaravelへのHTTP GETリクエスト(ブラウザでURLバーに入力してアクセスを含む)を指しています。 showメソッドの場合であれば、「http://xxxxx.dev/articles/1」等でアクセスするかと思いますが、その場合は1がshowメソッドの$idになるので、articlesテーブルデータでid1のデータが必要ということです。 createメソッドを表示する場合は、「http://xxxxx.dev/articles/create」にアクセスします。 sqliteデータベースファイルの中身の確認としては、WindowsのSQLiteGUIツールで何が良いかはわかりませんが、窓の森などで探してみてください。 [DB Browser for SQLite](http://forest.watch.impress.co.jp/library/software/sqldbbrowser/)
退会済みユーザー

退会済みユーザー

2017/09/05 10:32 編集

いつもありがとうございます。GUIはpupsqliteというのを使わせてもらってます。 それで確認したところ、idはAUTOINCREMENTの影響で5~14が使われいました。(14以前に動作確認でid振ったので1~4が空いています) URLはhttp://localhost:8000/articlesにアクセスしていました。この場合createというテーブルを作って、id1で採番できればいいのでしょうか。
退会済みユーザー

退会済みユーザー

2017/09/05 11:40 編集

あ、すみません言葉足らずでした・・・動かしたいのはcreateの方なんです。 その場合はテーブルか、モデルを作る必要がありますか? (Lara帳:はじめてのLaravel(8)あたりまで戻って見直してました。)
aro10

2017/09/06 04:09

createメソッドの役割としては、単に新規作成用のフォームを提供することなのでそのまま、http://xxxxx.dev/articles/create にアクセスすればよいかと思います。
退会済みユーザー

退会済みユーザー

2017/09/06 10:47

ありがとうございます。 Lara帳を見直していて思ったのですが、 (13)SEESINGの部分で、DB::table('articles')->delete();を行って 一度DBの中身が空にされているのですが、 ModelNotFoundExceptionなどが出る事に関係はありませんか? 一応少し前に戻ってModelの作成のところを一度やり直して見ようとは思うのですが・・・
aro10

2017/09/06 11:18

articlesテーブルの中身が空になれば、showメソッドは取得対象のidのデータが無いのでModelNotFoundExceptionになるかと思います。 pupsqliteを活用してください。
退会済みユーザー

退会済みユーザー

2017/09/06 21:05 編集

ありがとうございます。 一応自分で調べてもいるのですが未だにcreateにアクセス成功していません・・・。create.blade.phpの場所もC:\Homestead\Laravel\resources\views\articlesにいれて間違えてないはずなのですが・・・。このログもとっておいて見直したいので一度この記事は解決済みにさせていただきます、ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問