Я использую RedBean для создания приложения с расписанием.
Вот (упрощенная) структура БД:
владелец
проект
задача
Журнал
Структура таблицы намного сложнее, чем выше, но этого должно быть достаточно, чтобы продемонстрировать мою проблему.
Сотни элементов журнала в задаче и сотни задач в проекте.
Так что, если бы я хотел получить все элементы журнала для конкретного владельца, а также связать связанные задачи и проекты, как бы я достиг этого?
Чтобы использовать запрос SQL для получения данных достаточно просто, я могу выбрать, какие данные мне нужны и т. Д., Но если я изменяю данные, мне нужно создавать из них bean-компоненты. Поскольку некоторые из таблиц имеют похожие имена столбцов, RedBean не будет (или, кажется, не волшебным образом) преобразовывать данные в бины.
Поэтому я предполагаю, что мой вопрос заключается в том, как вы создаете запрос RedBean, получаете, получаетеAllAll, извлекаете, загружаете и т. Д., Который преобразует данные, которые он использует из каждого соединения, в bean-компонент?
Самым близким, что я могу найти, является метод обхода, который означает, что Id рекурсивно входит в каждый компонент, чтобы найти его потомков, но это означает, что нужно вернуть весь набор результатов и обработать его.
Если самый быстрый способ — это просто запустить SQL-запрос и выполнить итерации по данным и создать бины из них, не проблема. Я уже делаю это, я просто хотел немного более абстрактного способа сделать это и подумал бы, что RedBean может предложить эту функциональность.
Просто чтобы дать вам представление, вы также можете использовать соединения MySQL, чтобы правильно получить то, что вам нужно, используя R::getAll();
например
$result = getAll("SELECT L.* FROM logs L, tasks T, projects P, owner O
WHERE
L.task_id = T.id AND
T.project_id = P.id AND
P.owner_id = O.id");
$myResult = R::convertToBeans('myResult', $result);
R::convertToBeans
преобразует результаты в Бин, который может быть легко пройден.
Других решений пока нет …