マイグレーションで「Cannot declare class」のエラーが出たら

2022年9月20日火曜日

PHP

t f B! P L

LaravelのDBマイグレーションで、こんな感じのエラーが出た。

Cannot declare class TableName, because the name is already in use
(訳)名前が既に使用されているため、クラス TableName を宣言できません

エラーメッセージ的にクラス名が被っているというエラーメッセージであるが、いくら見渡しても名前が被っでいるファイルはなく、一部のサイトでは「namespace」の問題とあるが、マイグレーションのファイルには「namespace」を指定しないので、一体絶対、何がダメなのか分からない。

原因はファイル名

原因はファイル名を間違えるという単純ミス。

マイグレーションのファイル名とクラス名にはルールがあり、これが間違っていると冒頭のエラーが出るらしい。(エラーメッセージが紛らわしい)

ファイル名のルール

ファイル名は次の形式の沿っている必要がある。

yyyy_mm_dd_hhmmss_テーブル名_table.php

今回、私は後ろの _table をつけ忘れてのが原因でエラーになった。

クラス名のルール

マイグレーションのクラス名は、以下の命名ルールである。

Create[テーブル名]Table

テーブル名をスネークケースにした名前にする。

例えばテーブル名が「user_sales」ならクラス名は「CreateUserSalesTable」だ。

スポンサーリンク
スポンサーリンク

このブログを検索

Profile

自分の写真
Webアプリエンジニア。 日々新しい技術を追い求めてブログでアウトプットしています。
プロフィール画像は、猫村ゆゆこ様に書いてもらいました。

仕事募集もしていたり、していなかったり。

QooQ