2014-10-24 2 views
3

제목이 매우 혼란 스럽다고 생각합니다. 가능한 한 잘 설명하려고합니다. 다음과 같이 게시물 검색에 대해 많은 질문을 던집니다.여러 단계로 구성된 Laravel eloquent split 쿼리

$posts = Post::select('...') 
      ->leftJoin('...') 
      ->leftJoin('...') 
      ->where('...') 
      ->orWhere('...') 
      ->orderBy('...') 
      ->orderBy('...') 
      ->groupBy('...') 
      ->with('...') 
      ->paginate(8); 

어떻게이 쿼리를 분할 할 수 있습니까? 예를 들면 :

$posts = Post::select('...') 
      ->leftJoin('...') 
      ->leftJoin('...') 

$posts->where('...') 
     ->orWhere('...'); 

$posts->orderBy('...') 
     ->orderBy('...') 
     ->groupBy('...'); 

$posts->with('...') 
     ->paginate(8); 

임 Laravel 4.2을 사용하고 내가 ( this post 포함) 몇 가지를 시도했지만 나는 그것이 동작하지 않습니다. 게시물 검색 및 필터링에이 기능이 필요합니다.

+0

사용중인 실제 코드를 게시 할 수 있습니까? 어떤 오류가 있었습니까? –

답변

9

시작 모델의 새로운 인스턴스를 생성하고 변수에 최저치를하여, 그 변수를 사용하여 쿼리를 작성, 다음 get()로 끝 :

$posts = new Post; 
$posts = $posts->where('...'); 
$posts = $posts->orWhere('...'); 
$posts = $posts->orderBy('...'); 
... 
$posts = $posts->get(); 

오히려이 모든 체인을하는 것보다,하지만, 질의 범위와 잘 구조화 된 관계 메소드를 사용하여 상당히 능률적으로 작업을 수행 할 수 있습니다.

+0

위대한 작품, 나는 '$ posts->'(... ')'직후에 시도했다. 그 트릭은'$ posts = $ posts-> where ('...') '를 사용하는 것이다. 감사. – JasonK

+0

하나의 변수에 정렬 된 결과가 필요한 동안 문제가 있습니까? $ postsOrdered & $ posts에 정렬되지 않은 결과가 나타납니다. posts = new Post; $ posts = $ posts-> where ('...'); $ posts = $ posts-> orWhere ('...'); $ postsOrdered = $ posts-> orderBy ('...'); ... $ posts = $ posts-> get(); $ posts 결과는 위의 결과에 영향을받습니다. 즉 $ posts가 주문됩니다. 어떻게이 문제를 극복 할 수 있습니까? –