RedBean многостоловое соединение

Я использую RedBean для создания приложения с расписанием.

Вот (упрощенная) структура БД:

владелец

  • Я бы
  • название
  • Эл. адрес

проект

  • Я бы
  • описание
  • owner_id

задача

  • Я бы
  • описание
  • project_id

Журнал

  • Я бы
  • Начните
  • конец
  • описание
  • TASK_ID

Структура таблицы намного сложнее, чем выше, но этого должно быть достаточно, чтобы продемонстрировать мою проблему.

Сотни элементов журнала в задаче и сотни задач в проекте.

Так что, если бы я хотел получить все элементы журнала для конкретного владельца, а также связать связанные задачи и проекты, как бы я достиг этого?

Чтобы использовать запрос SQL для получения данных достаточно просто, я могу выбрать, какие данные мне нужны и т. Д., Но если я изменяю данные, мне нужно создавать из них bean-компоненты. Поскольку некоторые из таблиц имеют похожие имена столбцов, RedBean не будет (или, кажется, не волшебным образом) преобразовывать данные в бины.

Поэтому я предполагаю, что мой вопрос заключается в том, как вы создаете запрос RedBean, получаете, получаетеAllAll, извлекаете, загружаете и т. Д., Который преобразует данные, которые он использует из каждого соединения, в bean-компонент?

Самым близким, что я могу найти, является метод обхода, который означает, что Id рекурсивно входит в каждый компонент, чтобы найти его потомков, но это означает, что нужно вернуть весь набор результатов и обработать его.

Если самый быстрый способ — это просто запустить SQL-запрос и выполнить итерации по данным и создать бины из них, не проблема. Я уже делаю это, я просто хотел немного более абстрактного способа сделать это и подумал бы, что RedBean может предложить эту функциональность.

2

Решение

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

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]