2016-06-30 3 views
0

Итак, у меня есть таблица Нитки и таблица Комментарии, я хочу отсортировать темы по последнему комментарию, вставленным в нечто вроде comments.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

Показывает только те темы с комментариями, которые также заказываются созданным_атом из потоков, это игнорирование комментариев: S – Sociopath

+0

Да, это только поток показа с комментариями, потому что вы заказываете строки на основе комментариев, что делать вы хотите с потоком, который не имеет комментариев? @Sociopath –

+0

Если у потока нет комментариев, я хочу сравнить его created_at с комментарием created_at и посмотреть, кто должен оставаться на вершине – Sociopath

0

Присоединяйтесь к ним и попробовать этот,

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

Я надеюсь, что это поможет/вести вас.

Смежные вопросы