[Laravel] LaravelでModelにおいてRelationを設定したものを参照するときのやり方

LaravelでEloquentORMを使用して、ModelでRelationを設定した場合に値を参照する方法が今ひとつわかりにくかったのでメモ。

<?php namespace App;
use Illuminate\Database\Eloquent\Model;
class Plan extends Model {
  public function resellar ()
   {
   return $this->belongsTo('App\Resellar');
  }
}
みたいに、PlanというModelがResellarというModelにbelongsToという形でRelationを設定しました。 で、Laravelのマニュアルによると
$phone = User::find(1)->phone;
とやるとRelation先の値が取れますよと。
確かにこれは問題ない。

で、やりたかったのはControllerで
public function index()
{
  return view('plan.index', ['plans' => \App\Plan::all() ]);
}
とやって、viewの方でModelの各値を取り出して使いたかった。
でまあ、最初はviewの方でRelation先のResellar Modelにあるresellar_nameという項目を取り出すのに
{{ $plan->resellar_name}}
とかやったんですが、これはNG。
ちょっと落ち着いて考えてみて
{{ $plan->resellar->resellar_name}}
とやってみたらOK。
まあ分かってしまえばそうだよねって内容…。
でもこういうのって気が付かない時は気が付かなくて、気がついた時に「あああああ!自分のバカ!」ってなるんだよなぁ。


コメント