Ok tôi chỉ dành 8 giờ với mô-đun di chuyển. Tôi không thể tìm thấy chỉ một ví dụ hoạt động cho việc di chuyển dữ liệu sql. Ngay cả tài liệu riêng của Drupal cũng có trạng thái "lỗi thời".
Tôi đang cố gắng chỉ nhập tiêu đề - vì vậy điều đó sẽ khá đơn giản. Thật không may, tôi thậm chí không gặp lỗi khi cố gắng nhập cấu hình cũng như plugin nguồn.
test_migrate_er.info.yml - (mô-đun được bật)
tên: Thử nghiệm di chuyển ER
loại: mô-đun
description: 'Trình nhập cho các nút tin tức qua sql ("test" // Typo 3)'
gói: kiểm tra
phiên bản: PHIÊN BẢN
core_version_requirement: ^8.8.0 || ^9.0
dự án: 'test_migrate_er'
phụ thuộc:
- drupal: di chuyển
- drupal: di chuyển_tools
- drupal:di chuyển_plus
mig_plus.migration_group.test_migrate_content.yml (cái này được nhập qua "drush cim")
uuid: 366085cb-4cea-49d1-84a0-534afd31b114
mã ngôn ngữ: en
trạng thái: đúng
phụ thuộc: { }
id: test_migrate_content
nhãn:"NHẬP KIỂM TRA"
mô tả: không
source_type: null
mô-đun: không
shared_configuration: null
nguồn:
plugin: test_source
khóa: di chuyển
Kết nối cơ sở dữ liệu được đặt trong local.settings.php (nó sử dụng khóa nguồn)
$databases['migrate']['default'] = [...]
Khi nhập cấu hình thr tất cả có vẻ tốt - không có lỗi ... nhưng khi xuất nó thì nguồn bit bao gồm các thành phần phụ (plugin và khóa) sẽ biến mất như thể chúng là thuộc tính không hợp lệ. Điều đó cũng sẽ giải thích tại sao plugin/di chuyển không bao giờ được hiển thị khi thử nghiệm qua ms. Có vẻ như trình phân tích cú pháp cấu hình đang bỏ qua nó.
Plugin nguồn (/web/modules/custom/test_migrate_er/src/Plugin/migrate/source/News.php. -- mô-đun "test_migrate_er" được bật)
<?php
không gian tên Drupal\test_migrate_er\Plugin\migrate\source;
sử dụng Drupal\di chuyển\Plugin\di chuyển\source\SqlBase;
sử dụng Drupal\di chuyển\Row;
/**
* Ví dụ tối giản cho plugin nguồn SqlBase.
*
* @MigrateSource(
* id = "test_source",
* source_module = "test_migrate_er",
* )
*/
lớp Tin tức mở rộng SqlBase {
/**
* {@inheritdoc}
*/
truy vấn hàm công khai() {
// Dữ liệu nguồn được truy vấn từ bảng 'curling_games'.
$query = $this->select('tx_news_domain_model_news_copy', 'n')
-> trường ('n', [
'uid',
'dấu',
'crdate',
'ngày giờ',
'Tiêu đề',
'trêu ghẹo',
'bài kiểm tra cơ thể',
]);
trả lại truy vấn $;
}
/**
* {@inheritdoc}
*/
trường hàm công khai() {
trường $ = [
'uid' => $this->t('uid' ),
'tstamp' => $this->t('tstamp' ),
'crdate' => $this->t('crdate' ),
'datetime' => $this->t('datetime' ),
'tiêu đề' => $this->t('title' ),
'đoạn giới thiệu' => $this->t('đoạn giới thiệu' ),
'bodytext' => $this->t('bodytext' ),
];
trả lại các trường $;
}
/**
* {@inheritdoc}
*/
hàm công khai getIds() {
trở lại [
'uid' => [
'kiểu' => 'số nguyên',
'bí danh' => 'n',
],
];
}
/**
* {@inheritdoc}
*/
chức năng công cộng chuẩn bịRow(Row $row) {
// Ví dụ này cho thấy các thuộc tính nguồn có thể được thêm vào như thế nào
// chuẩn bịRow(). Ngày nguồn được lưu trữ là 2017-12-17
// và thời gian là 16:00. Drupal 8 lưu các trường ngày và giờ
// ở định dạng ISO8601 2017-01-15T16:00:00 trên UTC.
// Chúng tôi nối ngày và giờ của nguồn và thêm giây.
// Kết quả tương tự cũng có thể đạt được bằng cách sử dụng 'concat'
// và 'format_date' xử lý plugin trong quá trình di chuyển
// Định nghĩa.
// $date = $row->getSourceProperty('date');
// $time = $row->getSourceProperty('time');
// $datetime = $date . 'T' . $ thời gian . ':00';
// $row->setSourceProperty('datetime', $datetime);
trả về cha mẹ::prepareRow($row);
}
}
Bạn tìm thấy rất nhiều mã ví dụ "di chuyển" ... không phải mã nào trong số chúng nhắm mục tiêu sql và dường như không phải mã nào trong số chúng được cập nhật. Tôi tự hỏi liệu có ai biết ví dụ hoạt động hoặc ít nhất là tài liệu chính xác không. Điều đó sẽ làm cho những ngày tiếp theo thú vị hơn rất nhiều :)
Cảm ơn vì sự giúp đỡ