Внешний ключ для связок связок в Field API? - PullRequest
3 голосов
/ 19 марта 2011

Я использую существующую базу данных и перехожу на Drupal 7. Унаследованная модель базы данных имеет базовую таблицу объектов с общими столбцами, а затем столбец типа, который указывает, является ли объект изображением, образцом, таксоном и т. Д. Каждый «тип» имеет свою собственную отдельную таблицу столбцов (таблица изображений, таблица образцов, таблица локальностей и т. д.), привязанная к таблице базовых объектов с помощью внешнего ключа.

В некоторых случаях, например, изображения, есть столбец, который ссылается на идентификатор образца. Другими словами, несколько изображений могут принадлежать одному и тому же «specimen_id». Этот идентификатор является идентификатором базового объекта соответствующего образца.

При переходе на Drupal я создал новую сущность для таблицы базовых объектов, а затем определил пакеты для каждого типа базового объекта. Столбцы, которые являются частью каждой таблицы типов, теперь я прикрепляю к пакетам во время установки модуля. Я делаю это, определяя массив полей и экземпляров полей, затем перебирая массивы и вызывая field_create_field() и field_create_instance().

Это правильный способ сделать это?
Когда я создаю поле внешнего ключа, например specimen_id, откуда оно знает, что оно ссылается на идентификатор объекта базового объекта для данного образца?
Чтобы установить эти отношения, должен ли я на самом деле использовать hook_field_schema() для их определения, так как он имеет настройку внешнего ключа, а затем создавать поля и экземпляры полей?

Конечно, это становится актуальным при создании представлений и необходимости извлечения информации. Я думаю, это можно сформулировать как связка <=> связок. Во время операций CRUD я могу получить то, что мне нужно, когда мне это нужно, используя идентификаторы.

Любая помощь или понимание приветствуется.

1 Ответ

0 голосов
/ 30 декабря 2015

Использование Миграция модуль.

«Модуль миграции предоставляет гибкую структуру для миграции контента в Drupal из других источников (например, при конвертации веб-сайта из другой CMS в Drupal)».

...