モデルの作成とリレーションの追加
モデルの作成
モデル名は大文字から始まる単数形にするのが一般的。
$ docker-compose exec workspace php artisan make:model Sample
コマンドが成功すると、laravel/appディレクトリにSample.phpが作成される。
Sample.phpには何もメソッドが書かれていないが、extends Modelとある通り、Modelクラスを継承している。
リレーションの追加
例)SampleモデルにUserモデルへのリレーションを追加する場合
<?php namespace App; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; class Sample extends Model { //戻り値の型はBelongsToクラス public function user(): BelongsTo { return $this->belongsTo('App\User'); } }
$this
$this
は、Sampleクラスのインスタンス自身を表す。
リレーション
belongsToメソッドの引数には、関係するモデルの名前を文字列で渡す。
このようなリレーションを返すuserメソッドを作っておくと、$sample->user->name
と書くことで、sampleモデルから紐付くuserモデルのプロパティにアクセスできるようになる。
Eloquentのリレーション
関係 | メソッド |
---|---|
1対1 | hasOne |
1対多 | hasMany |
多対1 | belongsTo |
多対多 | belongsToMany |