Получение дерева данных JSON из MySQL

У меня новостная лента похожа на новостную ленту Facebook.

Это означает, что мне нужно получать не "прямые" наборы строк и столбцов из MySQL, а больше как "деревья" данных с разной длиной ветвей (и разным содержимым).

Если я пойду прямо, у меня будет много вложенных циклов в PHP - потому что для каждого типа новостей нужны разные наборы данных.

пример новостной ленты: 1) Пользователь "A" добавил 2 новых изображения (здесь я должен получить user_name, user_avatar, image_path_1, image_path_2 и т. д.) 2) Пользователь "B" прокомментировал изображение "A" пользователя (здесь мне нужно User's Имя "B", аватар пользователя "B", путь к изображению, комментарий, текст, имя пользователя "A" и т. Д.)

Видишь, о чем я?

Поэтому я хочу получить данные из хранимой процедуры MySQL, преобразованные в формат JSON.

{"news": 
            [
               {news_type: "new_images", user_name: "john", user_avatar: "0002.jpg", image_path: "/images/00123.jpg"}
               {news_type: "comment", user_name: "john", user_avatar: "0002.jpg", comment: "hello!"}
            ]
      }

Я могу сделать это преобразование в MySQL с помощью "concat" и "group_concat"... Я просто хочу спросить ваше мнение, если это хорошая идея или нет - и если нет, то какой способ лучше.

Спасибо за вашу помощь!

ОБНОВЛЕНИЕ, поэтому, наконец, я переключился на MongoDB:)

2 ответа

Решение

Это не было бы разумно. Вы должны использовать ваш сервер базы данных только для работы с базой данных.

PHP автоматически выполнит всю кодировку JSON за вас с помощью json_encode(), если вы просто передадите ему ассоциативный массив. Нет смысла изобретать велосипед или сбивать ваш сервер базы данных.

Было бы удобно иметь тип выходного потока: меньше демаршалинга / маршалинга. И если вам нужно поддерживать потребителей php и java, то это больше обрабатывает данные. Казалось бы, меньше работы для подключения выходного потока и вызова хранимой процедуры.

Другие вопросы по тегам