LoginSignup
2
2

More than 3 years have passed since last update.

Laravelのリレーションについて

Last updated at Posted at 2018-07-04

Laravelでリレーションがしたいときはモデルに記述する必要があります。
1対1の場合はこんな感じ↓

public function phone()
    {
        return $this->hasOne('App\Phone');
    }

例えばAiueoというモデルにこれを記述すると、aiueosテーブルのphone_idとphonesテーブルのidが紐付き、aiueosテーブルからselectしてきたときにphonesテーブルから取得したデータがオブジェクトとして入ってきます。

aiueosテーブルのカラム名がiphone_idではない場合は、
↓↓↓↓↓↓↓ あなたの記事の内容
return $this->hasOne('App\Phone', '自分のテーブルの該当カラム名', '紐づけたいテーブルののカラム名');
───────
return $this->hasOne('App\Phone', '自分のテーブルの該当カラム名', '紐づけたいテーブルのカラム名');
↑↑↑↑↑↑↑ 編集リクエストの内容
のような形で記述しなければいけない。

多対1の時は逆なので注意
例:return $this->belongsTo('App\Phone', '紐づけたいテーブルのカラム名', '自分のテーブルの該当カラム名');

1対多の時はこれ
return $this->hasMany('App\Phone', '紐づけたいテーブルのカラム名', '自分のテーブルの該当カラム名');
しかし、僕がこれでやった時はなぜか失敗
return $this->hasMany('App\Phone')
これだとなぜか上手くいった・・・謎

hasOneだけでいいじゃん、belongsToとかいらないじゃんとか思う人もいると思う。
でも従属テーブルのidでSELECTかけたいときとかに必要になるから頭の片隅に入れといてね

後、hasManyで自分のidから紐付さきのテーブルの行をまとめて削除する方法とかあるのかな?あったら便利

終わり

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2