例えば、データベースにBooksテーブルを作った場合、Bookモデルを使えば以下のようにBooksテーブルを操作できる。
use App\Book;
//(略)
$books = Book::all(); // 「Book」で「Books」テーブルを操作できる
これは、Laravelではモデルのクラス名の複数形をテーブル名として使用するようになっているから。
テーブル名 –
https://readouble.com/laravel/5.8/ja/eloquent.html#eloquent-model-conventions
Flightモデルにどのテーブルを使用するか、Eloquentに指定していない点に注目してください。他の名前を明示的に指定しない限り、クラス名を複数形の「スネークケース」にしたものが、テーブル名として使用されます。今回の例で、EloquentはFlightモデルをflightsテーブルに保存します。モデルのtableプロパティを定義し、カスタムテーブル名を指定することもできます。
このような
- モデル : 単数形
- テーブル名 : 複数形
のルールに縛られずに任意の名前でテーブルを操作したいときの設定は以下の通り。
class Book extends Model
{
/**
* モデルと関連しているテーブル
*
* @var string
*/
protected $table = 'hogehoge'; // ここで任意の名前を設定
}
Bookのように単数形・複数形が分かりやすい名前なら、「テーブル名はBOOKSにしておいて、テーブル操作時はBOOKを使えば良い」というのが簡単に分かる。
しかし、英単語によっては複数形が分かりにくかったり(単にsやesを付けるだけではないケースもある)、そもそも不可算名詞だったりする場合もあるので、状況に応じて自分で任意の名前を設定した方が良いかもしれない。
ちなみに、モデルのクラス名を「SNS」にしても「SNSESテーブル」にはアクセスできなかった。