Tôi gặp sự cố với ngôn ngữ và không có vấn đề gì liên quan đến plugin migration_lookup trong Drupal 8.
Tôi có một dữ liệu json khác nhau, ví dụ mỗi dữ liệu là các ngôn ngữ khác nhau
json với de:
data:{ id: 12345, name: 'Product 1 de', id: 123456, name: 'Product 2 de'}
json với vi
data:{ id: 12345, name: 'Product 1 en'}
tất nhiên json này chỉ là ví dụ không hợp lệ.
Tôi có 2 tệp yaml di chuyển có tên: migrate_plus.migration.data.yml và migrate_plus.migration.data_de.yml
Phiên bản tiếng Anh là phiên bản mặc định trong drupal.
Để tham gia phiên bản de với en, tôi sử dụng quy trình:
không:
-
plugin: di chuyển_lookup
nguồn: id
di chuyển: dữ liệu
no_stub: đúng
stub_id: dữ liệu
Tôi sử dụng no_stub: true bởi vì tôi không muốn tạo các nút sơ khai cho phiên bản en không tồn tại. Mọi thứ đều hoạt động tốt nhưng chỉ lần đầu tiên nhưng nếu tôi muốn cập nhật di chuyển thì tôi gặp lỗi
[lỗi] Drupal\Core\Database\IntegrityConstraintViolationException: SQLSTATE[23000]: Vi phạm ràng buộc về tính toàn vẹn: 1062 Mục nhập trùng lặp '9424706c-e536-4a59-be13-ebb91367a1a9' cho khóa 'node_field__uuid__value': CHÈN VÀO {node} (vid, loại, uuid, langcode) GIÁ TRỊ (:db_insert_placeholder_0, :db_insert_placeholder_1, :db_insert_placeholder_2, :db_insert_placeholder_3); Mảng
cho mục phiên bản de. Trong trường hợp của tôi, tôi không muốn tạo mục sơ khai mới cho phiên bản tiếng Anh cho sản phẩm 2 de vì vậy tôi nghĩ rằng tùy chọn no_stub sẽ ổn. Ngay cả khi tôi di chuyển: quay ngược lại, tôi nhận thấy rằng việc di chuyển này từ de vẫn tồn tại.