Моя цель — импортировать json-файл в Drupal 8 с помощью модулей Migrate (migrate_plus, migrate_tools).
Я использую модуль абзаца с такими полями, как имя (ссылка на объект) и состав (номер с плавающей запятой). И в узле у меня есть заголовок и другие поля с полем ссылки на абзац.
Я импортирую, иногда узел будет сгенерирован с пустым именем абзаца. Если я сброшу миграцию и попытаюсь импортировать снова, журналы базы данных выдают следующую ошибку
Ошибка: неподдерживаемые типы операндов в Drupal\migrate\Plugin\migrate\process\SubProcess->transform() (строка 204 C:\xampp\htdocs\drupal-migration\core\modules\migrate\src\Plugin\migrate\process \SubProcess.php) #0 C:\xampp\htdocs\drupal-migration\core\modules\migrate\src\MigrateExecutable.php(394): Drupal\migrate\Plugin\migrate\process\SubProcess->transform(Array, Объект(Drupal\migrate_tools\MigrateBatchExecutable), Объект(Drupal\migrate\Row), 'field_ingredien...')
но я не могу понять, почему импорт не работает. Я потратил много времени на отладку.
А также узел не создается, если ic_ref
значение пусто,
{
"lcia_id": 3,
"name": "Сублимированная черника",
"нетто_вес": 1,
"страна": "Великобритания",
"ic_ref": ""
}
Конфигурация миграции для компонентов (config/install/migrate_plus.migration.icm_config_group_json_source_node)
item_selector: /данные/ингредиенты/
поля:
-
имя: src_lcia_id
этикетка: «Идентификатор LCIA»
селектор: lcia_id
-
имя: src_name
этикетка: «Название ингредиента»
селектор: имя
-
имя: src_ic_ref
label: 'ID параграфа IC'
селектор: ic_ref
идентификаторы:
src_lcia_id:
тип: целое число
процесс:
заглавие:
плагин: concat
источник:
- имя_источника
- константы/TITLE_SUFFIX
псевдо_mbe_ic_paragraph:
плагин: migration_lookup
миграция: icm_config_group_json_source_paragraph
источник: src_ic_ref
field_ingredient_composition:
плагин: sub_process
источник:
- '@pseudo_mbe_ic_paragraph'
процесс:
target_id: '0'
target_revision_id: '1'
пункт назначения:
плагин: 'сущность: узел'
default_bundle: ингредиент
миграция_зависимости:
обязательный:
- icm_config_group_json_source_paragraph
по желанию: { }
Конфигурация миграции для ингредиентов (config/install/migrate_plus.migration.icm_config_group_json_source_paragraph)
источник:
item_selector: /данные/состав
поля:
-
имя: src_lcia_id
этикетка: «Идентификатор LCIA»
селектор: lcia_id
-
имя: src_name
этикетка: «Название ингредиента»
селектор: имя
-
имя: src_composition
этикетка: «Состав ингредиентов»
селектор: композиция
идентификаторы:
src_lcia_id:
тип: строка
процесс:
field_ingredient_name: src_name
field_ingredient_composition: src_composition
пункт назначения:
плагин: 'entity_reference_revisions:paragraph'
default_bundle: ингредиент_состав
миграция_зависимости: ноль
JSON-данные
"данные": {
"ингредиенты": [
{
"lcia_id": 1,
"name": "Овсяные хлопья (обычные)",
"нетто_вес": 1,
"country": "Соединенное Королевство, Ирландия",
"ic_ref": 1
},
{
"lcia_id": 2,
"name": "Ароматизированный сахар",
"нетто_вес": 1,
"страна": "Великобритания",
"ic_ref": 2
},
{
"lcia_id": 3,
"name": "Сублимированная черника",
"нетто_вес": 1,
"страна": "Великобритания",
"ic_ref": ""
}
],
"сочинение": [
{
"lcia_id": 1,
"имя": "Сахар",
"состав": 0,9398839137645107
},
{
"lcia_id": 2,
"имя": "Дрожжи",
"состав": 0,04975124378109454
}
]
}
}```