2016-06-10 6 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'); 
    } 

} 

을 그리고 지금은 더 컨트롤이 없거나 컨트롤이 가장 오래된 (created_at) 어디에 모든 컨트롤에서, 5 저장을 싶어.

어떻게하면 웅변으로이 조건을 만들 수 있습니까? 조인스 (Joins)로 만드는 법을 알고 있지만, "멋진 코드"로 그것을 원합니다. 같은

뭔가 : 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합니다.