2017-04-07 1 views
0

각 주제의 마지막 게시물 작성일로부터 주제를 정렬하려고합니다. 누구든지 어떻게하는지 알고 있습니까? 사실 나는 원하는 모든 것을 잘 회복하지만 올바른 순서는 아닙니다.LARAVEL - 관계에 따라 주문하십시오.

하나의 주제에는 많은 게시물이 있고 하나의 게시물에는 하나의 주제가 있습니다.

* : topic = sujet 코드에 있습니다. topics = lesSujets.

$lesSujets = Sujet::where('jeu_id', $idJeu)->paginate(20); 

@foreach ($lesSujets as $sujet) 
     <tr> 

      <td><a href="{{route('sujet.show', $sujet->id)}}">{{$sujet->titre}}</a></td> 
       ... 
     </tr> 

스크린 샷 : forum

나는 주제는 최근 응답으로 정렬하고 싶습니다. 주문은 "최고의 카드", "테스트 1", "aaaaa ..!", "[회사] zzzz .."; 주제의 마지막 답은 $ sujet-> postes-> last() -> created_at (스크린 샷의 관점에서)로 알 수 있습니다.

+0

희망 : http://stackoverflow.com/a/19885982/6028607 –

답변

0

열렬한로드를 사용하여 orderBy() 관계를 사용할 수 있습니다. 나는 당신의 데이터베이스 스키마 완전히 잘 모르겠지만, 자신을 말하기 프랑스어되고, 난 그냥 시도하고 당신에게 일치하는 예를 제공하고이 가야 당신이 우리 ;-)

$sujets = Sujet::where('jeu_id', $idJeu)->with('poste')->orderBy('post.date', 'desc')->get(); 

을 준 것과 의미가 있습니다 귀하의 모든 "sujets", 그리고 열심히 그것은 "poste"의로드, "poste"의 속성 중 하나에 의해 주문 enabeling.

편집 : 여기, 잘못 올바른 구문입니다 어떻게 이것에 대해, 내가 어디에서 먼저 찾고 무엇을 오해 생각 :

$sujets = Sujet::where('jeu_id', $idJeu)->with(['poste' => function ($query) { 
    $query->orderBy('created_at', 'desc'); 
}])->get(); 

편집 2? 내 코드에서 관계 이름을 확인하여 네 마음과 정말 흡사하게해라.하지만 결국에는 더미 코드를 테스트 해 보았다. 이 도울 수

$sujets = Sujet::where('jeu_id', $idJeu) 
->with(['poste'])->get() 
->sortByDesc('poste.created_at'); 
+0

들으,하지만 난 이미 시도했습니다 그것은 $ lesSujets 작동하지 않을 것 = Sujet :: 곳 ('jeu_id' $ idJeu) -> with ('postes') -> orderBy ('poste.created_at', 'desc') -> 페이지 매김 (20); // 오류 : SQLSTATE [42S22] : 열을 찾을 수 없음 : 1054 Champ 'poste.created_at'inconnu dans order 절 (SQL :'sueets'에서 select *'jeu_id'는'poste'에 의한 1 order.'created_at' desc limit 20 offset 0) – emeliku

+0

@emeliku 내 대답을 수정했는데 구문이 틀렸다는 것을 알게되었습니다. 편집을 참조하십시오. –

+0

아무것도 변경되지 않습니다. 집에 돌아 간다 – emeliku

관련 문제