У меня проблема с языками и никаких замечаний относительно плагина migration_lookup в Drupal 8.
У меня есть разные данные json, каждый из них, например, на разных языках
json с де:
data:{ id: 12345, name: 'Product 1 de', id: 123456, name: 'Product 2 de'}
json с ан
данные: {идентификатор: 12345, имя: 'Товар 1 en'}
конечно, этот json - только пример, который не проверяется.
У меня есть файл yaml с двумя миграциями, который называется: migrate_plus.migration.data.yml и migrate_plus.migration.data_de.yml.
Английская версия является версией по умолчанию в Drupal.
Чтобы присоединиться к версии de с en, я использую процесс:
нид:
-
плагин: migration_lookup
источник: идентификатор
миграция: данные
no_stub: правда
stub_id: данные
Я использую no_stub: true, потому что я не хочу создавать узлы-заглушки для несуществующей версии en. Все работает хорошо, но только в первый раз, но если я хочу обновить миграцию, я получаю ошибки
[ошибка] Drupal\Core\Database\IntegrityConstraintViolationException: SQLSTATE[23000]: нарушение ограничения целостности: 1062 Дублирующаяся запись '9424706c-e536-4a59-be13-ebb91367a1a9' для ключа 'node_field__uuid__value': INSERT INTO {node} (vid, type, uuid, код языка) ЗНАЧЕНИЯ (:db_insert_placeholder_0, :db_insert_placeholder_1, :db_insert_placeholder_2, :db_insert_placeholder_3); Множество
для пункта де версии. В моем случае я не хочу создавать новый элемент-заглушку для английской версии продукта 2 de, поэтому я думаю, что вариант no_stub будет в порядке. Даже если я сделаю migrate:rollback, я заметил, что эта миграция из de все еще существует.