Learn or Die

生涯勉強。Macです。

モデルの作成とリレーションの追加

モデルの作成

モデル名は大文字から始まる単数形にするのが一般的。

$ 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

参考サイト

Eloquent:リレーション 6.x Laravel