Puncte:0

Cum actualizez paragrafele existente?

drapel vn

Scriu migrații pentru a importa date sursă sub formă de paragrafe.

Aceasta este migrația principală (care funcționează).

id: resource_chapter_section_text
etichetă: importați conținut din coloana resource.body din baza de date sursă ca paragrafe de text_secțiune_capitol.
migration_group: redat_web
sursă:
  plugin: resource_chapter_section_text
  cheie: migrate_web
proces:
  # o valoare reală va fi plasată aici prin migrarea resource_chapter_section_text_content
  # trebuie să o facem într-o a doua trecere pentru a evita crearea unei dependențe circulare
  text_câmp/valoare:
    plugin: default_value
    default_value: „substituent”
  text_câmp/format:
    plugin: default_value
    default_value: „text_plat”
destinaţie:
  plugin: entity_reference_revisions:paragraph
  pachet_predefinit: text_secțiune_capitol
dependențe:
  aplicat:
    modul:
      - redacted_migration

Rețineți că field_text este populat cu o valoare de substituent. Asta pentru că datele sursă pentru acel câmp trebuie transformate în anumite moduri înainte de a le putea importa. Pentru a evita o dependență circulară, această transformare trebuie făcută până la urmă text_secțiune_capitol paragrafele au fost importate.

Deci, încerc să scriu o a doua migrare, care va face o a doua trecere peste același tabel sursă și va actualiza paragrafele care au fost create de prima migrare. Aceasta este migrația.

id: resource_chapter_section_text_content
label: convertește conținutul paragrafelor resource_chapter_section_text din pseudo-Markdown în HTML și actualizează URL-urile linkurilor.
migration_group: redat_web
sursă:
  plugin: resource_chapter_section_text_content
  cheie: migrate_web
proces:
  id:
    plugin: migration_lookup
    migrare: resource_chapter_section_text
    sursa: section_id
  text_câmp/valoare: conținut_convertit
  text_câmp/format:
    plugin: default_value
    default_value: „full_html”
destinaţie:
  plugin: entity_reference_revisions:paragraph
  pachet_predefinit: text_secțiune_capitol
  overwrite_properties:
    - text_câmp/valoare
    - câmp_text/format
dependențe_migrație:
  necesar:
    - text_secțiune_capitol_resurse
    - termenul_colecție
    - document_node
    - temă
    - resursă
dependențe:
  aplicat:
    modul:
      - redacted_migration

După cum puteți vedea, specific ID-ul de paragraf existent și folosesc destinație.overwrite_properties pentru a specifica câmpurile de actualizat.

Am folosit cu succes aceeași tehnică într-o altă migrare pentru a actualiza nodurile existente. Totuși, aici nu funcționează. Migrate pare să încerce în schimb să creeze paragrafe noi. Primesc aceasta eroare:

[eroare] Drupal\Core\Database\IntegrityConstraintViolationException: SQLSTATE[23000]: încălcarea constrângerii de integritate: 1062
Dublați intrarea „3829” pentru cheia „PRIMARY”: INSERT INTO „paragraphs_item” (“id”, „revision_id”, „type”, „uuid”, „langcode”) VALORI (:db_insert_placeholder_0, :db_insert_placeholder_1, :db_insert_placeholder_2, :placeholder_insert_3 , :db_insert_placeholder_4);

Este posibil să faceți acest lucru cu entitățile de paragraf?

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.