たけるのプログラミング

作ったものとか、気ままにアップします。

【Laravel】Modelのリレーション1人勉強会①【PHP】

ER図は以下のツールを使いました。とても便利でした。無料です。
Flowchart Maker & Online Diagram Software

1対1のリレーション hasOne()

イメージはこんな感じ
f:id:takeru232423:20211115100327p:plain

Tweet_userモデルでTweet_contentを用意する

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

このようにすることでプロパティにアクセスする感覚でリレーション先の値を得ることができる。
Tweet_content()と定義したが、以下のように()はいらない。

Tweet_user::find(1)->Tweet_content->tweet






1対 多 hasMany()

イメージはこんな感じ
f:id:takeru232423:20211115101116p:plain

ユーザーが複数のツイートをしている状態。

Tweet_userモデルでTweet_contentを用意する。

 public function Tweet_content()
    {
        return $this->hasMany('App\Tweet_content');
    }

controllerで以下のようにして

$data = Tweet_user::find(1);
        return view('home',compact('data'));

view側でこんな感じで利用できる。

@foreach ($data->Tweet_content as $item)
<p>{{ $item->tweet }}</p>
@endforeach






多 対 1 belongsTo()

イメージはこんな感じ
f:id:takeru232423:20211115103948p:plain

Tweet_contentモデルでTweet_userを用意する。

public function Tweet_user()
    {
        return $this->belongsTo('App\Tweet_user');
    }

ツイートからツイートした人の名前を取得することができるようになる。

Tweet_content::find(1)->Tweet_user->name