2016-06-30 2 views
0

그래서 내가 테이블 스레드와 테이블 코멘트를 가지고, 내가 마지막으로 코멘트를 comment.created_at과 같은 무언가에 삽입하여 정렬하려면 어떻게해야합니까?다른 테이블 열로 Laravel 주문 테이블

$threads = Thread::where('subboaId', $id) 
      ->orderBy('comments.created_at', 'desc') 
      ->get(); 

이 시도하지만 난 그들을 또는 무언가에 가입 할 필요가 아마 작동하지

+0

어떤 Laravel 버전을 사용하고 있습니까? 4.x 또는 5.x? – GiamPy

+0

5.x를 사용하고 있습니다. – Sociopath

답변

2

사용 whereHas 기능 (https://laravel.com/docs/5.1/eloquent-relationships) :

public function comments() 
{ 
    return $this->hasMany(Comment::class); 
} 
:

먼저 당신은 당신의 스레드 모델에서 관계를 추가해야합니다

다음과 같이 컨트롤러에서 사용할 수 있습니다.

$threads = Thread::where('subboaId', $id)->whereHas('comments', function($query){ 
    $query->orderBy('created_at', 'desc'); 
})->get(); 

희망이 있으면 도움이 될 것입니다.

+0

주석이있는 유일한 스레드가 표시됩니다. 또한 스레드에서 created_at에 의해 정렬되었으므로 주석을 무시합니다. S – Sociopath

+0

예, 코멘트가있는 행을 주문하기 때문에 주석이있는 스레드 만 표시됩니다. 주석이없는 스레드를 원하십니까? @Sociopath –

+0

스레드에 주석이 없다면 createdan에 comment created_at를 비교하고 누가 최상위에 있어야 하는지를 – Sociopath

0

$threads = Thread::join('comments', 'comments.id', '=', 'threads.comment_id') 
       ->where('threads.subboaId', $id) 
       ->orderBy('comments.created_at', 'desc') 
       ->get();  

나는 당신을 이끌 /이 도움이되기를 바랍니다, 그들에 가입하고이 일을보십시오.