🐡

【Laravel】テーブルやビューが見つからない場合の対処

2021/05/09に公開

備忘録として記述

エラーメッセージ

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