Получение дерева данных 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, то это больше обрабатывает данные. Казалось бы, меньше работы для подключения выходного потока и вызова хранимой процедуры.