2016-11-24 1 views
0

私は閉鎖時に関係が持ち込まれる度に、with() Eloquentメソッドを使用してこのコードを繰り返し実行する必要があります:それは自動的に追加されますので、Eloquent - 特定のモデルのレスポンス()レスポンス付き標準

 'earmarks' => function($q) { 
      $q 
      ->join('locations', 'locations.id', '=', 'earmarks.location') 
      ->select('earmarks.*', 'locations.location AS em_location') 
      ->orderBy('date', 'asc'); 
     } 

私はいつもwith()がその関係に呼び出されたとき上記をしたいので、どのように私は私のモデルに追加することができますか?

答えて

2

コールバック関数をQuery Scopeに抽出するか、そのクエリで耳鳴りのための全く新しい関係を作ることができます。

public function earmarksWithLocations() 
{ 
    return $this->earmarks() 
     ->join('locations', 'locations.id', '=', 'earmarks.location') 
     ->select('earmarks.*', 'locations.location AS em_location') 
     ->orderBy('date', 'asc'); 
} 


->with('earmarksWithLocations') 

または

public function scopeWithLocations($q) 
{ 
    return $q 
     ->join('locations', 'locations.id', '=', 'earmarks.location') 
     ->select('earmarks.*', 'locations.location AS em_location') 
     ->orderBy('date', 'asc'); 
} 


->with(['earmarks' => function ($q) { 
    $q->withLocations(); 
}]) 
+0

驚くべきことだこと - ありがとうございました。 – daninthemix

関連する問題