2016-11-10 1 views
1

내가이 쿼리가 : 지금열망로드 Laravel

$tournament = Tournament::with(
      'championships', 
      'championships.settings', 
      'championships.category', 
      'championships.tree.users', 
     )->first(); 

를, 그것은 나에게 연결된 모든 대회와 토너먼트를 제공합니다.

내가 필요한 건 $ request-> championship이있는 대회와 만 토너먼트를하는 것입니다.

물론이 필터는 다른 모든 관계 ('championships.settings', 'championships.category', 'championships.tree.users')에서도 사용하고 싶습니다. 아이디어가 있습니까?

답변

3

이 같은 Constraining Eager Loading를 사용할 수 있습니다

$tournaments = Tournament::with(['championships' => function ($query) { 
    $query->where('something', 'like', '%this%'); 
}, 
'championships.settings' => function ($query) { 
    $query->where('something', 'like', '%this%'); 
}, 
...])->get(); 

희망이 도움이!

+0

이 작동하는 것 같군! Tx !!! –

+0

@JuliatzindelToro - 귀하의 정답을 얻는 데 도움이된다면이 답변을 받아 들여주십시오. 이렇게하면 다음과 같은 다른 질문에 답하는 동기가 생깁니다 : D 조 및 커뮤니티가 신속하게 최상의 답변을 얻을 수 있도록 돕습니다 ... –

2

로드 하위 쿼리 제약의 관계 :

$tournament = Tournament::with(['championships' => function($query) use ($request) { 
    return $query->where('id', $request->championshipId) 
     ->with([ 
      'settings', 
      'category', 
      'tree.users' 
     ]); 
}])->first();