โอเค ฉันแค่ใช้เวลา 8 ชั่วโมงกับ โมดูลการโยกย้าย. ฉันไม่พบตัวอย่างการทำงานเพียงตัวอย่างเดียวสำหรับการย้ายข้อมูล sql แม้แต่เอกสารของ Drupal เองก็ยังมีสถานะ "ล้าสมัย"
ฉันกำลังพยายามนำเข้าเฉพาะชื่อ - ดังนั้นมันควรจะค่อนข้างตรงไปตรงมา น่าเสียดาย ฉันไม่พบข้อผิดพลาดเมื่อพยายามนำเข้าการกำหนดค่าหรือโดยปลั๊กอินต้นทาง
test_migrate_er.info.yml - (เปิดใช้งานโมดูลแล้ว)
ชื่อ: ทดสอบการโยกย้าย ER
ประเภท: โมดูล
คำอธิบาย: 'ตัวนำเข้าสำหรับโหนดข่าวผ่าน sql ("ทดสอบ" // Typo 3)'
แพ็คเกจ: ทดสอบ
เวอร์ชัน: เวอร์ชัน
core_version_requirement: ^8.8.0 || ^9.0
โครงการ: 'test_migrate_er'
การพึ่งพา:
- drupal: โยกย้าย
- drupal:migrate_tools
- drupal:migrate_plus
migrate_plus.migration_group.test_migrate_content.yml (นำเข้าผ่าน "drush cim")
รหัส: 366085cb-4cea-49d1-84a0-534afd31b114
รหัสภาษา: th
สถานะ: จริง
การพึ่งพา: { }
รหัส: test_migrate_content
ป้ายกำกับ:"ทดสอบการนำเข้า"
คำอธิบาย: null
source_type: null
โมดูล: null
shared_configuration: null
แหล่งที่มา:
ปลั๊กอิน: test_source
คีย์: โยกย้าย
การเชื่อมต่อฐานข้อมูลถูกตั้งค่าใน local.settings.php (ใช้ซอร์สคีย์)
$databases['migrate']['default'] = [...]
เมื่อนำเข้าการกำหนดค่า thr ทุกอย่างดูดี - ไม่มีข้อผิดพลาด ... แต่เมื่อส่งออกไฟล์ แหล่งที่มา บิตรวมถึงองค์ประกอบย่อย (ปลั๊กอินและคีย์) จะหายไปราวกับว่าเป็นแอตทริบิวต์ที่ไม่ถูกต้อง นั่นจะอธิบายว่าทำไมปลั๊กอิน / การโยกย้ายจึงไม่แสดงเมื่อทำการทดสอบผ่าน นางกลอง. ดูเหมือนว่าตัวแยกวิเคราะห์การกำหนดค่าจะเพิกเฉย
ปลั๊กอินต้นทาง (/web/modules/custom/test_migrate_er/src/Plugin/migrate/source/News.php. -- เปิดใช้งานโมดูล "test_migrate_er")
<?php
เนมสเปซ Drupal\test_migrate_er\Plugin\migrate\source;
ใช้ Drupal\migrate\Plugin\migrate\source\SqlBase
ใช้ Drupal\migrate\Row;
/**
* ตัวอย่างที่เรียบง่ายสำหรับปลั๊กอินซอร์ส SqlBase
*
* @MigrateSource(
* id = "test_source",
* source_module = "test_migrate_er",
* )
*/
ข่าวคลาสขยาย SqlBase {
/**
* {@inheritdoc}
*/
แบบสอบถามฟังก์ชันสาธารณะ () {
// สืบค้นข้อมูลจากตาราง 'curling_games'
$query = $this->select('tx_news_domain_model_news_copy', 'n')
->ฟิลด์ ('n', [
'อูด',
'ตราประทับ',
'เครเดต',
'วันเวลา',
'ชื่อ',
'ทีเซอร์',
'เนื้อความ'
]);
ส่งคืน $query;
}
/**
* {@inheritdoc}
*/
ฟิลด์ฟังก์ชันสาธารณะ () {
$ฟิลด์ = [
'uid' => $this->t('uid' ),
'tstamp' => $this->t('tstamp' ),
'crdate' => $this->t('crdate' ),
'datetime' => $this->t('datetime' ),
'title' => $this->t('title' ),
'ทีเซอร์' => $this->t('ทีเซอร์' ),
'bodytext' => $this->t('bodytext' ),
];
ส่งคืนฟิลด์ $;
}
/**
* {@inheritdoc}
*/
ฟังก์ชั่นสาธารณะ getIds () {
กลับ [
'uid' => [
'type' => 'จำนวนเต็ม',
'นามแฝง' => 'n',
]
];
}
/**
* {@inheritdoc}
*/
ฟังก์ชั่นสาธารณะ prepareRow (แถว $ แถว) {
// ตัวอย่างนี้แสดงวิธีการเพิ่มคุณสมบัติของแหล่งที่มา
// เตรียมแถว () วันที่ของแหล่งที่มาถูกจัดเก็บเป็น 2017-12-17
// และเวลา 16:00 น. Drupal 8 บันทึกฟิลด์วันที่และเวลา
// ในรูปแบบ ISO8601 2017-01-15T16:00:00 บน UTC
// เราเชื่อมโยงวันที่และเวลาของแหล่งที่มาและเพิ่มวินาที
// ผลลัพธ์เดียวกันสามารถทำได้โดยใช้ 'concat'
// และ 'format_date' ประมวลผลปลั๊กอินในการย้ายข้อมูล
// คำนิยาม.
// $date = $row->getSourceProperty('วันที่');
// $time = $row->getSourceProperty('เวลา');
// $datetime = $วันที่ 'ท' . $เวลา ':00';
// $row->setSourceProperty('วันที่เวลา', $datetime);
ส่งคืนพาเรนต์::prepareRow($row);
}
}
คุณพบโค้ดตัวอย่าง "การโยกย้าย" จำนวนมาก ... ไม่ใช่ของเป้าหมาย sql และไม่ใช่ของเหล่านั้นที่ดูเหมือนจะเป็นปัจจุบัน ฉันสงสัยว่ามีใครรู้ตัวอย่างการทำงานหรือเอกสารประกอบที่ถูกต้องหรือไม่ นั่นจะทำให้วันต่อๆ ไปสนุกขึ้นมาก :)
ขอบคุณที่ช่วยเหลือ