Điểm:0

Using root source property within migrate sub_process plugin

lá cờ gb

I'm performing migration from Drupal 9 into another Drupal 9 project. Let's say "content features" migration.

In a node migration I'm trying to create stubs for media items.

The media source has two id keys: mid, langcode. The mid key is getting from field's target_id property. But there is no language property on field's level and I'm trying to pass node's language as second id value for the media lookup.

The migrate_lookup plugin tries to find media entity by mid and langcode properties: MigrationLookup::transform():

if (isset($this->configuration['source_ids'][$lookup_migration_id])) {
  $lookup_value = array_values($row->getMultiple($this->configuration['source_ids'][$lookup_migration_id]));
}

then getMultiple() tries to get values from the current iteration.

Does someone know how to pass root row instead of iteration row?

...
process:
  langcode: langcode
  ...

  field_cover_image:
    - plugin: sub_process
      source: field_cover_image
      process:
        lang:
          plugin: default_value
          default_value: 'en'
        target_id:
          plugin: migration_lookup
          source: target_id
          migration: migrate_media_image
          source_ids:
            migrate_media_image:
              - target_id
              - ROOT_ROW_SOURCE_PROPERTY_LANGCODE

I wonder also if it possible to use constants within sub_process and $row->getMultiple()?

An example:

...
      process:
        target_id:
          plugin: migration_lookup
          source: target_id
          migration: migrate_media_image
          source_ids:
            migrate_media_image:
              - target_id
              - constants/default_language
Điểm:0
lá cờ gb

tôi đã tìm ra nó từ sub_ process tài liệu của plugin:

/**
 * Các phím cấu hình khả dụng:
 *...
 * - bao gồm_nguồn: (tùy chọn) Nếu ĐÚNG, tất cả cấu hình plugin nguồn và
 * các giá trị sẽ được sao chép vào hàng được xử lý phụ trong một thuộc tính mới có tên
 * cho giá trị cấu hình source_key (xem bên dưới). Mặc định là FALSE.
 * - source_key: (tùy chọn) Nếu include_source là TRUE, điều này
 * là tên thuộc tính của hàng được xử lý phụ sẽ chứa
 * cấu hình và giá trị nguồn. Bỏ qua nếu bao gồm_source là
 *     SAI. Mặc định là 'nguồn' nếu không có giá trị nào được cung cấp.
 */

Và sử dụng nó như:

  trường_cover_image:
    - plugin: sub_ process
      nguồn: field_cover_image
      bao gồm_source: đúng
      source_key: gốc
      tiến trình:
        target_id:
          plugin: di chuyển_lookup
          nguồn: target_id
          di chuyển: di chuyển_media_image
          nguồn_id:
            di chuyển_media_image:
              - target_id
              - root/langcode # <- lấy thuộc tính từ hàng gốc

Và các hằng số nguyên nhân cũng sẽ có sẵn:

di chuyển_media_image:
  - target_id
  - gốc/hằng số/default_language

Một giải pháp thay thế có thể tạo thuộc tính lặp làm giá trị mặc định:

  plugin: sub_ process
  nguồn: field_cover_image
  tiến trình:
    lang:
      plugin: default_value
      default_value: 'en'

và gọi nó là thuộc tính đích lặp lại hiện tại @lang:

    lang:
      plugin: default_value
      default_value: 'en'
    target_id:
      plugin: di chuyển_lookup
      nguồn: target_id
      nguồn_id:
        di chuyển_media_image:
          - target_id
          - '@lang'

Các loại nội dung/phương tiện được đặt thành có thể dịch được nhưng thực tế chỉ có một ngôn ngữ và tôi có thể "mã hóa cứng" ngôn ngữ đó, nhưng tốt hơn là sử dụng giá trị động.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.