🐡
【Laravel】テーブルやビューが見つからない場合の対処
備忘録として記述
エラーメッセージ
SQLSTATE[42S02]: Base table or view not found: 1146 Table '<dbスキーマ名>.<テーブル名>' doesn't exist
原因
主に以下の事象が起きていると思われる
①該当テーブルがそもそも存在しない
②マイグレーションされていない
③マイグレーションファイルやモデルクラスでの名称の不一致
該当テーブルがそもそも存在しない
対応:テーブルを作成する
$ php artisan make:migration create_<テーブル名>_table
マイグレーションされていない
対応:全てのマイグレーションファイルを移行させる
$ php artisan migration
マイグレーションファイルやモデルクラスでの名称の不一致
対応:以下のファイルにおいて、参照しているテーブル名が正しいことを確認
マイグレーションファイル
マイグレーション
class CreateTestsDetailTable extends Migration
{
~中略~
public function up()
{
// テーブル名に合わせるようにする
Schema::create('tests_detail', function (Blueprint $table) {
// カラム設定
$table->id();
$table->String('content', 4000);
$table->timestamps();
});
}
~中略~
}
モデルクラス
テストモデル
class TestsDetail extends Model
{
use HasFactory;
protected $table = 'test_detail';
}
※上記以外にサービスクラスなどを作成している場合は、そちらも確認すること
※本記事では、Controllerやルーティング設定、Viewでの呼び出しには問題ない前提とする
Discussion