0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Laravel】Base table or view not found: Table '(サービス名).(テーブル名)' doesn't exist

Posted at

環境

Laravel v9.5.1 (PHP v8.1.3)

状況

テスト実行時に下記のエラー。

Base table or view not found: 1146 Table '(サービス名).(テーブル名)' doesn't exist 

解決法

公式ドキュメントには

どのデータベーステーブルがFlightモデルに対応するかをEloquentに知らせていないことにお気づきかもしれません。別の名前を明示的に指定しない限り、クラスの複数形の「スネークケース」をテーブル名として使用します。
モデルの対応するデータベーステーブルがこの規約に適合しない場合は、モデルにtableプロパティを定義してモデルのテーブル名を自分で指定できます。

今回のエラーが例えば下記だった場合、

Base table or view not found: 1146 Table '(サービス名).flight' doesn't exist

モデルでテーブル名を指定しなかったのでEloquentが「flights」を使用しており、エラーが出た。

下記のようにテーブル名を指定してエラー解決!

class Flight extends Model
{
    /**
     * モデルに関連付けるテーブル
     *
     * @var string
     */
    protected $table = 'flights';
}

参考

Railsは...

Railsにも命名ルールを上書きするときの書き方があった。
使ったことなかったので知らなかった…

class Flight < ApplicationRecord
  self.table_name = "flights"
end
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?