2017-10-07 7 views
0

이 그 모델의 사이에Laravel : 관련 테이블에 ORDERBY하고

  • 사용자
  • 역할

와 관계 내 모델은 많은 많은입니다.

나는 이런 식으로 쿼리를 만들려면 :

return User::with('roles')->orderBy('roles.id')->paginate(); 

나는 모든 모델에 기본 클래스를 생성하기 때문에 나는 join를 원하지 않는다. get 후에도 orderBy을 사용하고 싶지 않습니다. 내 데이터를 모두로드해야하고 이후에 정렬 및 페이지 매김이 가능해야하기 때문입니다. 그래서 아주 좋은 생각은 아닙니다.

+0

참여가 없으면 (AFAIK) 참여할 수 없습니다. –

답변

0
User::where('role_id','!=','0')->orderBy('role_id','DESC')->paginate(10); 
+0

일반적으로 일부 행의 익명 코드를 게시하는 대신 솔루션을 설명하는 것이 좋습니다. [좋은 답변 작성 방법] (https://stackoverflow.com/help/how-to-answer) 및 [코드 기반 답변 전체 설명] (https://meta.stackexchange.com)을 읽을 수 있습니다./questions/114762/explain-entire- % E2 % 80 % 8C % E2 % 80 % 8Bcode-based-answers). –

1

당신은이 같은 시도 할 수 있습니다 :

return User::with(['roles' => function ($query) { 
     $query->orderBy('id', 'desc'); 
    }])->paginate(); 

을하지만 이것은 단지 열망 로딩 특성을 주문하지만, 당신이 조인을 사용하는 관심이 있다면이 같은 수 있습니다 :

return User::with('roles') 
    ->join('roles', 'user.id', '=', 'roles.user_id') 
    ->orderBy('roles.id', 'desc') 
    ->paginate(); 

당신은 당신의 주요 관심사 인 paginate을 쉽게 사용할 수 있습니다.

희망이 도움이됩니다.