ふたりはララベル (Laravel PHP Framework)

PHPフレームワークのLaravelの体験記を書いていきます。こんなタイトルのブログですが萌え系アニメは一秒たりとも観たことがありません。

Eloquentで関連付けられたテーブルの情報を取得する

野菜テーブルと値段テーブルが別れていたとして、このテーブルをEloquentで結合したい。

yasai

idname
1トマト
2きゅうり
3大根

nedan

idyen
1150
260
3200

以下の3ステップで結合ができる。

1:Eloquentで関連付ける

class Yasai extends Eloquent {

  public $timestamps = false;

  public function nedan() {

    return $this->belongsTo('Nedan');
  }

}

2:Controllerで取得する

$yasais = Yasai::with(['nedan'])->get();

return View::make('yasai.index', ['yasais' => $yasais]);

3:Viewで展開する

@foreach($yasais as $yasai)
<li>{{ $yasai->name }} {{ $yasai['nedan']->yen }}</li>
@endforeach

おまけ:Eloquentで関連付けられたテーブルにwhere句を指定する方法

$lists = Yasai::whereHas('nedan', function($q) {
    $q->where('yen', '>', 100);
  })->get();