2013-08-17 2 views
1

Я создаю сайт, основанный на голосовании в Laravel 4. У меня есть много-много отношений между пользователями и post_votes(). моя таблица post_votes имеет поле user_id, post_id и vote (0 или 1 для вверх и вниз). Я хочу заказывать свои сообщения общим количеством голосов, upvotes и downvotes. Есть предположения?Сортировка по count() сводной таблицы Laravel 4

+0

Основная идея состоит в том, чтобы присоединиться к таблице голосов в таблице сообщений и заказывать запрос вверх или вниз. Вы еще что-нибудь пробовали? Некоторый код поможет получить ответы :) –

+0

@RobGordijn Я думаю, что он пытается сделать это с Eloquent, судя по тегу, который он использовал при создании вопроса. –

+0

Я закончил любопытное путешествие вокруг Красноречивого. Я надеялся сделать это ясно, но вот что я в итоге сделал. '$ posts = Post :: all(); $ post_array = array(); \t foreach ($ posts as $ post) { \t \t $ post_array [] = array ('id' => $ post-> id, 'votes' => $ post-> vote-> count()); \t} \t функции голоса ($ а, $ б) { \t вернуть $ A [ 'голоса'] - $ B [ 'голосов']; \t} \t \t usort ($ post_array, 'votes'); \t $ obj_array = array(); \t \t Еогеасп ($ post_array в $ пост) { \t \t $ obj_array [] = Post :: найти ($ пост [ 'ID']); \t} \t \t $ сообщения = $ obj_array; ' – MrJellyhands

ответ

0

Вы должны внести изменения в свою структуру таблицы. Самое простое, что вам нужно сделать, это создать поле в ваших таблицах, чтобы сохранить общее количество голосов и увеличивать его каждый раз, когда пользователь получает голосование. Это позволит не только сортировать по подсчету голосов, но и улучшать производительность вашего приложения, потому что нет необходимости повторно проверять таблицу, чтобы узнать, что такое счет.