PeopleモデルとPersonモデルが参照するテーブル

投稿者: | 2019年7月8日

LaravelでPeopleというモデルクラスを作りましたので、MySQLにはpeoplesというテーブルを作りましたところ、プログラムの中でPeopleモデルからデータを取ってこようとすると、「peopleテーブルが存在しない」というエラーが発生しました。

あれ、Laravelはモデル名が複数形になったテーブルを参照するんじゃないの?と思って、Personモデルとpersonsテーブルを作って実験したところ、こちらも
「peopleテーブルが存在しない」というエラーが発生 ・・・

どうもLaravelは標準では、Peopleモデルはpeopleテーブル、Personモデルもpeopleテーブルを参照するようです。

しかも、AgencyPersonのような末尾に単語を含むモデルでもagency_peopleというテーブルを参照するようになるようです。

Peopleはすでに複数のものをさし、Personの複数はPeopleというルールなのでしょうか。

もちろんこれを解消するにはモデルの中で、下記のように記述すればいいだけです。

class People extends Model
{
    protected $table = 'peoples';
}

モデルでテーブルが上手く参照できない場合は、このような単数形と複数形の法則を疑ってみるのが良さそうです。