2016-06-10 99 views
0

我有模型店和控制:雄辯 - 凡關係表

class Store extends Model{ 
    protected $fillable = ['code', 'name', 'country_id', 'active']; 

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

class Control extends Model{ 
    protected $fillable = ['store_id', 'user_id', 'saved_at']; 

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

} 

現在我想從所有的控件得到5家店,其中沒有控制或控制是最古老的(created_at)。

我怎樣才能使這個條件與雄辯?我知道如何使用連接,但我希望它與「漂亮的代碼」。

喜歡的東西:d

\App\Store::with('controls')->whereNotNull('controls.created_at')->orderBy('controls.created_at', 'desc')->take(5)->get(); 

回答

3

我還沒有嘗試過這些,但我認爲兩者應該工作:

\App\Store::whereHas('controls', function ($query) { 
     $query->whereNotNull('created_at'); 
     $query->orderBy('created_at', 'desc'); 
    })->take(5)->get(); 

    \App\Store::with(['controls' => function ($query) { 
     $query->whereNotNull('created_at'); 
     $query->orderBy('created_at', 'desc'); 
    }])->take(5)->get(); 

使用debugbar,看看哪一個更快。