#php #mysql #oop
#php #mysql #ооп
Вопрос:
Есть ли у них что-то, что может ‘unflatten’ результаты запроса SQL / MySQL в массив объектов PHP, создавая структуру отношений parent child?
Часто я нахожу, что выполнение запросов к моей базе данных для быстрого получения родительского / дочернего результата необходимо выполнять с помощью двух запросов. Один для захвата родителей, другой для захвата дочерних элементов. Для сложных запросов это иногда может быть немного медленным (даже при правильной индексации и т. Д. На месте).
Гораздо быстрее просто запустить БД одним запросом и получить мои родительские / дочерние данные в одном ответе. Интересно, есть ли общий способ объединить материал вместе, потому что я хотел бы делать это чаще…
Простой пример:
SELECT CountryID, Country, CityID, City FROM country INNER JOIN city ON city.CountryID = country.CountryID ORDER BY CountryID
Результаты запроса:
1, США, 50, Нью-Йорк
1, США, 51, Лас-Вегас
2, Австралия, 52, Сидней
И впоследствии структура объекта будет (я только что вставил ее в формат XML для удобства чтения, чтобы понять структуру объекта, которую я надеюсь достичь):
<Results>
<Country ID="1" Name="USA">
<Children>
<City ID="50" Name="New York"/>
<City ID="51" Name="Las Vegas"/>
</Children>
<Country ID="2" Name="Australia"/>
<Children>
<City ID="52" Name="Sydney"/>
</Children>
</Country>
</Results>
Я был бы потрясающим, если бы это было возможно, возможно, даже с бесконечной глубиной. т.е. Отношения Parent, Child, ChildChild…
Приветствия, Люк!
Комментарии:
1. Приятной лекции 🙂 sitepoint.com/hierarchical-data-database
2. Вау, это интересно. Интересно, написал ли кто-нибудь аналогичный код для этого, чтобы обернуть типичную структуру базы данных родительского дочернего элемента, а не изменять способ хранения данных. Я думаю, что это вдохновило меня на то, чтобы что-то придумать.
3. 🙂 способ хранения здесь не подходит (по крайней мере, для неизвестной глубины дерева). У вас должна быть линейная таблица со столбцом idParent, который указывает каждому узлу на его родительский элемент. Суть в том, как вы решаете сгенерировать свое дерево в зависимости от ваших потребностей .. рад, что я смог помочь 🙂
4. Спасибо catalin. У меня будет что опубликовать завтра! Какой хороший сайт для обмена классным кодом php?
5. Код, который вы создаете сами и для ideas, SO, в значительной степени в порядке 🙂 вам не нужно получать код, вам нужно изучить базовые методы программирования, и все станет намного проще для вас…