получение JSON-дерева данных из MySQL - PullRequest
1 голос
/ 20 декабря 2010

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

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

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

пример ленты новостей: 1) Пользователь "A" добавил 2 новых изображения (здесь я должен получить user_name, user_avatar, image_path_1, image_path_2 и т. Д.) 2) Пользователь "B" прокомментировал изображение пользователя "A" (здесь мне нужно имя пользователя "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" ... Я просто хочу спросить ваше мнение, если это хорошая идея или нет - а если нет, то какой способ лучше.

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

UPDATE так что наконец я перешел на MongoDB:)

Ответы [ 2 ]

3 голосов
/ 05 января 2011

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

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

0 голосов
/ 28 марта 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...