2016-09-06 2 views
0

메인 테이블 'QSOS'와 관계의 무리가있는 프로젝트가 있습니다. 이제 고급 검색을 만들려고 할 때 동시에 모든 관계를 쿼리하는 방법을 알지 못합니다. 교신 모델은 다음과 같은있다 :Laravel 4 묵시적 관계 쿼리

다음
public function band() 
{ 
    return $this->belongsTo('Band'); 
} 

public function mode() 
{ 
    return $this->belongsTo('Mode'); 
} 

public function prefixes() 
{ 
    return $this->belongsToMany('Prefix'); 
} 

public function user() 
{ 
    return $this->belongsTo('User'); 
} 

public function customization() { 
    return $this->hasOne('Customization'); 
} 

나는 모든 교신 다음과 같은 요구 조건의 컬렉션을 반환하는 코드를 다음과 같이 SearchController 있습니다

$qsos = Qso::withUser($currentUser->id) 
        ->join('prefix_qso','qsos.id','=','prefix_qso.qso_id') 
        ->join('prefixes','prefixes.id','=','prefix_qso.prefix_id') 
        ->where('prefixes.territory','like',$qTerritory) 
        ->withBand($qBand) 
        ->withMode($qMode) 
        ->where('call','like','%'.$input['qCall'].'%') 
        ->orderBy('qsos.id','DESC') 
        ->paginate('20'); 

을 다음보기에서 나는 $ qso-를 호출 할 필요> prefixes-> first()와 $ qso-> prefixes-> last() (Qso와 Prefix는 manyToMany 관계를 가짐) 모두 null을 리턴한다. 뭐가 잘못 되었 니? 난 도망 ('접두사')에 걸릴 경우

  $qsos = Qso::withUser($currentUser->id) 
        ->with('prefixes') 
        ->withBand($qBand) 
        ->withMode($qMode) 
        ->where('call','like','%'.$input['qCall'].'%') 
        ->whereHas('prefixes', function($q) use ($qTerritory) { 
         $q->where('territory','like',$qTerritory); 
        }) 
        ->orderBy('qsos.id','DESC') 
        ->paginate('20'); 

답변

0

내가 작업 만 처리하는 것은 매우 시간이 오래 걸리는 발견 웅변 코드
+0

속도가 허용된다 : 여기 – brack11