Qiita初投稿です。
#取り組んでいた箇所
新規投稿フォームを作成後、Migrationでテーブルを作成しデータを保存するといった部分。
教材を参考にしてコードを書いて行き、フォームにデータを入力し、更新ボタンをクリック!
ここでエラーが!!
SQLSTATE[42S02]: Base table or view not found: 1146 Table`データベース名.テーブル名`~
※僕の場合はワインのサイトを作成していたので、
「データベース名/テーブル名」部分は→「mywine/wine」で作成していました!
エラーの内容自体は「参照しにいったテーブルがないですよー」とのこと。
もう少しよく見てみるとエラーに表示されているのは
「mywine/winesのテーブルなんてないよ〜」でした。
???
なぜ wine ではなくて wines を参照しにいってるの??
答えがこちら↓
#自動的にテーブルを複数形にされる
Flightモデルにどのテーブルを使用するか、Eloquentに指定していない点に注目してください。他の名前を明示的に指定しない限り、クラス名を複数形の「スネークケース」にしたものが、テーブル名として使用されます。今回の例で、EloquentはFlightモデルをflightsテーブルに保存します。モデルのtableプロパティを定義し、カスタムテーブル名を指定することもできます。
Laravel 5.4 Eloquent:利用の開始
簡単に言うと、「Laravelはテーブル名を明示的に指定していない場合、Modelのクラス名に対して複数系の名前でデータベースにテーブルを探しに行く」ということらしいです。
#解決方法
なぜ複数形になるのか仕組みが理解できたので、今回は、
php artisan migrate:rollback
でwineテーブルを取り消し、新たにwinesテーブルを作る。
これだけで解決しました。
#感想(おまけ)
前述の通り、教材を参考に自分のサイトを作成していました。
その教材ではサンプルで、ニュース投稿フォームを作成しており、テーブル名は「news」でした。
こちらは元々テーブル名が複数形なので問題なかったということですね!
・どういう処理が行われているのか、どこからどこが呼び出されているかがわかっていなかった
・データベースの構造
など、理解が甘かったので時間がかかりました。
基礎的なことが理解できていればもっと早く解決できたと思います。