Отношения многие ко многим React-admin

Я пытаюсь показать в Datagrid Field, который находится во взаимосвязи "многие ко многим" (промежуточная таблица).

У меня есть такие таблицы:

группа - group_subject - тема

  • В группе может быть много предметов
  • Тема может быть связана со многими группами

group_subject также имеет такие атрибуты, как рубрики и расписание

Это отношения "многие ко многим". Я хотел бы показать в <Resource> group все предметы, к которым подключена группа.

Использование чего-то вроде <SingleFieldList>: в качестве этого изображения

Я использую react-admin. Есть ли способ обрести ценности в этих отношениях?


person oskrgg    schedule 18.05.2018    source источник


Ответы (2)


Самый простой способ - скрыть эту промежуточную таблицу от react-admin. В любом случае, это хорошая вещь, чтобы скрыть эту деталь реализации, ИМО. Пользователи вашего API не должны об этом знать.

  • с точки зрения groups ресурсов, в группе много субъектов, каждая из которых имеет group_id, и ваш API должен позволять извлекать темы по этому полю group_id

  • с точки зрения subjects ресурсов, субъект имеет много групп, каждая группа имеет subject_id, и ваш API должен позволять извлекать группы по этому полю subject_id

person Gildas Garcia    schedule 08.07.2018
comment
Я обнаружил на Github, что <ReferenceManyField> и <ReferenceArrayField> предназначены для этого варианта использования, но я не могу заставить их работать. Например, моя конечная точка REST API (OData) User(1)/Roles возвращает роли, назначенные пользователю с идентификатором = 1. Если я использую эти компоненты, я могу указать reference и target реквизиты, но я не могу перемещаться по React Admin к конечной точке, такой как User(1)/Roles. Пользователи и роли находятся во взаимосвязи «многие-ко-многим», и у меня есть сводная (промежуточная) таблица для хранения взаимосвязей, поэтому у меня нет точных ссылок в User или Role таблице. Есть мысли по этому поводу? - person Allwe; 07.01.2019
comment
На самом деле, даже если ваш ответ не отвечает на вопрос, это неплохая идея и кажется лучшим вариантом, учитывая, что «response-admin» не может с этим справиться. Я просто спроектировал backend dto так, чтобы он возвращал результаты напрямую, а не через промежуточную конечную точку. Сделал то же самое для обновления, чтобы напрямую получить идентификаторы конечной модели. Таким образом, для внешнего интерфейса не существует промежуточных таблиц, и он работает должным образом с минимальными затратами времени. - person mgPePe; 09.05.2020
comment
response-admin справляется с этим за свою цену: их поддержка Enterprise включает компонент ManyToMany: marmelab.com/ra-enterprise/modules/ - я искал здесь, чтобы выяснить, создал ли кто-то бесплатный вариант. Пока не повезло. - person SomeCallMeTim; 18.02.2021

Из react-admin документации <ReferenceField> можно использовать для этой цели. Подробнее о документации. Возможно, это довольно поздний ответ, но я думаю, что это может быть полезно для других.

person Jasurbek Nabijonov    schedule 24.08.2020
comment
Бесплатные инструменты для react-admin обрабатывают только многие- ›один и один-› многие. Они сделали поддержку "многие ко многим" за платным доступом: marmelab.com / ra-enterprise / modules / - person SomeCallMeTim; 18.02.2021