Laravel 5.5 Получить порядок сообщений по сумме голосов

0

Привет, я хочу получать самые популярные сообщения, я создал систему, в которой вы можете голосовать за сообщение или комментарий. [+1, -1]

Голосовая таблица

  • integer: id - vote id

  • integer: model_id - идентификатор модели

  • string: model -model name ["App/Post", "App/Comment"]

  • целое число: значение - значение для голосования [-1, 1]

Теперь я хочу получить сообщения, упорядоченные по сумме стоимости. Но я застрял в тупике. Вот мой фактический код, к сожалению, не работает.

DB::table('posts')
->join('votes','posts.id','votes.model_id')
->groupBy('votes.model_id')
->where('model','App\Post')
->select('posts.*','sum(\'votes.value\')')
->get();
Теги:
eloquent
laravel-5

1 ответ

0
Лучший ответ

Пожалуйста, полностью прочитайте руководство по построению запросов Laravel.

Вам нужно использовать необработанное выражение, поскольку оно имеет агрегатную функцию.

DB::table('posts')
    ->join('votes','posts.id','=','votes.model_id')
    ->groupBy('votes.model_id')
    ->where('model','App\Post')
    ->selectRaw('posts.*, sum(votes.value) as sum_value')
    ->get();
  • 0
    Да, но когда я запускаю его, везде я получаю сумму ('voices.value') ": 0,0 Если я изменю сумму, чтобы посчитать ее, я получу хорошее значение.
  • 0
    только что отредактировал, вам не нужно цитировать столбец

Ещё вопросы

Сообщество Overcoder
Наверх
Меню