Связи между таблицами
Создание связи
Связи между таблицами создаются при помощи JOIN полей.
JOIN поля создаются в меню Структура таблицы.
Существует два способа создания JOIN поля:
- Нажмите на любую из кнопок Создать. В открывшемся окне выберите тип поля RELATION и наименование связываемого поля.
- Нажмите на кнопу + напротив связываемого поля. Тип поля и наименование связываемого поля заполнятся автоматически.
Помимо уже названных полей в окне создания можно заполнить следующие поля:
- Активно — если опция отключена, то поле не будет доступно для просмотра и редактирования;
- Наименование — название поля, которое будет использоваться при обращении к нему методами;
В имени поля можно указывать только латиницу (только нижний регистр), цифры и подчеркивание.
- Заголовок в интерфейсе — название поля, которое будет отображаться в интерфейсе;
- Тип — тип данных поля RELATION;
- Обязательное поле — если данная опция включена, то в поле не может быть задано значение NULL;
- Связываемая таблица — выпадающий список с кастомными таблицами бизнеса и доступными системными таблицами. Выбор таблицы из списка автоматически заполняет все остальные поля;
- Алиас связываемой таблицы — алиас необходим, так как в разных связываемых таблицах фигурируют одинаковые имена полей. Через него можно будет обращаться к полям связанной таблицы (алиас.поле);
- Поле текущей таблицы — имя связываемого поля текущей таблицы;
- Поле связываемой таблицы — поле по которому будет искаться соответствие с полем текущей таблицы;
- Использовать данную связь при редактировании поля — если опция включена, то при редактировании значения физического поля таблицы появляется выпадающий список со значениями из связанной таблицы;
НЕ включайте опцию Использовать данную связь при редактировании поля для нескольких связей одного и того же поля текущей таблицы. НЕ включайте данную опцию для JOIN полей второго уровня, так как у такого поля нет физического поля, для его редактирования в текущей таблице.
- Отображаемое поле 1-3 связываемой таблицы — имя поля которое тянется из связанной таблицы;
- Заголовок отображаемого поля 1-3 — заголовок поля которое тянется из связанной таблицы;
- Создавать внешний ключ для связи — Foreign Key для связи таблиц;
НЕ включайте опцию Создавать внешний ключ для связи для нескольких связей одного и того же поля текущей таблицы. НЕ включайте данную опцию для JOIN полей второго уровня.
- Действие при обновлении:
- Каскад — автоматически обновлять ссылающиеся друг на друга записи в связанных таблицах;
- Запрет — невозможно обновить запись в связанной таблице, если есть записи ссылающиеся на этот товар в другой таблице;
- Установить в NULL — установить значение NULL при обновлении связанной записи;
- Действие при удалении:
- Каскад — автоматически удалять ссылающиеся друг на друга записи в связанных таблицах;
- Запрет — невозможно удалить запись в связанной таблице, если есть записи ссылающиеся на этот товар в другой таблице;
- Установить в NULL — установить значение NULL при удалении связанной записи;
- Значение по умолчанию — предустановленное значение поля;
- Размер — максимальное количество символов в данном поле;
- Точность — количество символов в числе после точки;
- Подсказка в интерфейсе — подсказка отображаемая в интерфейса в режиме просмотра и редактирования данных;
- Всплывающая подсказка в интерфейсе — подсказка в интерфейсе, возникающая при наведении мышкой на знак вопроса рядом с полем.
После заполнения всех обязательных полей (Наименование, Заголовок в интерфейсе, Связываемая таблица, Алиас, Поле связываемой таблицы) нажмите на кнопку Сохранить. Поле появится в таблице Структура.
Если вы хотите создать несколько связей с одной и той же таблицей, добавьте уникальное для таблицы число в алиасе. Например: leads, leads2...
Записи в таблицах имеют кликабельные ссылки на записи, на которые они ссылаются. Поля с ссылками выделены синим цветом.
При выключении активности физического поля, связанные с ним RELATION поля продолжат отображаться в данных таблицы.
Так на скриншоте выше поле Лид содержит ссылку на соответствующую запись в системной таблице лидов, а поле Название ссылку на соответствующую запись о товаре.
При редактировании записи в ссылающейся таблице связанные поля изменяются с помощью выпадающих списков.
Если что-то настроено некорректно, то при просмотре или редактировании записей таблицы может возникнуть ошибка 500. Попробуйте отключить лишние опции Использовать данную связь при редактировании поля и Создать внешний ключ, проверьте алиасы и имена полей. Если не получается исправить проблему, обратитесь в поддержку Metabot.
Уровни вложенности
Связанные поля имеют неограниченный уровень вложенности. Рассмотрим на примере:
- В таблице orders есть поле lead_id;
- В той же таблице создается RELATION поле lead ссылающееся на таблицу leads поле id, которое обращается к leads.name и leads.person_id;
- В той же таблице orders создается RELATION поле person ссылающееся на таблицу person поле id на основе подтянутого связанного поля leads.person_id.
Так будут выглядеть настройки данного поля:
В Поле текущей таблицы записывается не физическое поле таблицы, а поле доставаемое из таблицы лидов. В таких многоуровневых JOIN полях обязательно должны быть выключены опции Использовать данную связь при редактировании поля и Создать внешний ключ.
Пример
1. В вашем боте есть таблица заказов orders.
2. Вам требуется узнать id персоны лида через эту таблицу. Чтобы это сделать можно связать поле lead_id с системной таблицей лидов.
3. Для этого создается JOIN поле lead с типом RELATION описывающее связь между полем lead_id таблицы заказов и полем id в системной таблице лидов.
4. Теперь при обращении из JS методов вы можете обратиться к данным лида напрямую из таблицы заказов.
Со связываемыми полями так же можно работать с помощью JS методов. Все методы и их описание вы можете посмотреть в Справочнике по функциям JS
Нет комментариев