Я использую Codeigniter и у меня есть таблица, которая выглядит так:
+----+-------+------+-----------+--------------+
| id | user | post | action | added |
+----+-------+------+-----------+--------------+
| 1 | ann | 1 | commented | <date added> |
| 2 | sarah | 1 | commented | <date added> |
| 3 | carol | 1 | liked | <date added> |
| 4 | susan | 1 | commented | <date added> |
| 5 | derek | 2 | liked | <date added> |
| 6 | ann | 1 | liked | <date added> |
+----+-------+------+-----------+--------------+
На ленте активности у меня все сообщения выводятся в зависимости от времени. Самый недавний в начале.
Энн понравился пост 1
Дереку понравился пост 2
Сьюзен прокомментировала пост 1
Кэрол понравился пост 1
Сара прокомментировала пост 1
ann прокомментировал пост 1
Как лучше всего сгруппировать их по активности в сообщении?
например.
Энн и еще 1 человеку понравился пост 1
Дереку понравился пост 2
Сьюзен и еще 2 человека прокомментировали сообщение 1
Могу ли я получить всю информацию из базы данных, а затем отсортировать ее по php до загрузки страницы? или я выполняю какой-то GroupBy в запросе?
ТИА.
Я не эксперт по codeigniter, но используя простой SQL-запрос, вы можете сделать это довольно легко. Попробуй это:
$query = "SELECT * FROM activity_feed_table_name GROUP BY post";
Я проверяю документацию codeigniter и ее активная реализация записи поддерживает предложение groupBy.
$this->db->get('yourActivityFeedTable');->group_by("post");
Я давно не использовал CI, поэтому точно не помню синтаксис, но это может привести вас на правильный путь. Дайте нам знать, если это работает!
Других решений пока нет …