2016-06-10 66 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,看看哪一个更快。