Сайт ↗
Разделы документации
UI интерфейс · 0.8.1

Связи на примере статей, разделов и тегов

Создайте связь статьи с разделом, покажите обратную коллекцию и добавьте несколько тегов.

На этой странице

В базе знаний у статьи есть один раздел и может быть несколько тегов. Для раздела достаточно ссылки в самой статье; для набора тегов нужна таблица связей. Ниже разберём оба варианта в Generator UI и посмотрим, как они появятся в готовом приложении.

Статья принадлежит разделу

Выберите Article в Content, нажмите Create relation → Many-to-one и укажите цель Section. Редактор создаст в статье ссылочное поле, например sectionId, вместе со связью, которой оно принадлежит.

Если статья обязательно должна принадлежать разделу, выберите Required. Если раздел можно не указывать — Optional. Этот выбор согласованно задаёт обязательность поля и связи. В качестве подписи для списка разделов выберите title: автор будет видеть название, а не технический идентификатор.

Во вкладке Basic settings проверьте цель, обязательность и отображаемое имя. В Advanced settings находятся физические ключи и политики БД; меняйте их с учётом схемы данных. Нажмите Finish и дождитесь обновления списка.

Чтобы позже изменить связь, откройте её FK-поле или тег в Relations. Действие Save field сохранит поле, владеющую связь и выбранные изменения обратных представлений вместе. Вторую belongsTo для той же ссылки создавать не нужно.

Покажите статьи внутри раздела

Чтобы видеть статьи в карточке раздела, добавьте в Section One-to-many view. Это обратное представление: оно показывает статьи, у которых sectionId указывает на текущий раздел. Выберите существующую владеющую связь на Article; ещё один внешний ключ для этого не создаётся.

Когда меняете владельца или цель связи, укажите, что делать с её обратными коллекциями: Keep unchanged оставляет их как есть, Update with this relationship обновляет вместе со связью, Remove удаляет. При переносе отдельно проверьте старый адрес, который исчезнет.

Если нужного FK-поля нет в списке, вернитесь к сущности-владельцу и исправьте модель. Этот список не создаёт произвольные поля вместо отсутствующих.

Добавьте несколько тегов

Для связи Article с Tag выберите Many-to-many. Во вкладке Basic укажите цель и поле для отображения названия тега. В Advanced настройте промежуточную таблицу и ключи. Здесь sourceField и targetField — первичные ключи самих сущностей, а не колонки промежуточной таблицы.

Выберите одну сторону владельцем связи: именно в её форме можно будет менять набор тегов. Обратное имя на Tag не создаёт ещё одного владельца или таблицу. Чтобы в обратном списке видеть читаемые названия, задайте inverseDisplayField; для Tag.articles обычно подходит Article.title.

Параметр inverseName задаёт имя обратной связи в структуре модели. Право менять её состав он не выдаёт. Обратное представление many-to-many остаётся доступным только для чтения.

Что появится после Generate

После Finish связь сохранена в manifest. Чтобы увидеть её в приложении, выполните Generate, примените миграции и перезапустите приложение. Раздел можно будет выбрать по названию; варианты подгружаются асинхронно и ограничены по количеству. Related records откроет обратные коллекции. Для их просмотра не требуется update, но нужны права чтения связанных записей.

Пустое необязательное поле означает, что связь не выбрана. Если название ещё загружается, дождитесь ответа. Сообщение о недоступной записи означает, что прочитать выбранный раздел нельзя; при ошибке запроса повторите чтение. Не заменяйте неизвестную запись придуманным названием.

Сохранение, удаление и ошибки

В редакторах коллекций есть вкладки Basic/Advanced и закреплённые кнопки Cancel / Delete / Finish. Переключение вкладок сохраняет введённые значения. Если Finish обнаружит ошибку, откроется нужная вкладка. Delete требует отдельного подтверждения и не сохраняет остальные правки формы.

Пока изменения сохраняются, закрыть редактор нельзя. Если есть несохранённые правки, при Cancel или закрытии панели выберите: продолжить редактирование или отказаться от черновика. При конфликте версий обновите модель. Если результат сохранения неизвестен, нажмите Refresh и проверьте его до повторного Create.

О том, как работают политики внешних ключей и какие физические изменения запрещены, читайте в модели отношений.

Дополнительно: CLI

Для автоматизации этих действий используйте CLI отношений.

Полная справка редактора

Все параметры редакторов собраны в Content: связи. Если нужно разобраться в устройстве внешних ключей, откройте модель отношений.