Menggunakan modul Migrasi: Saya mengerti bahwa prepRow () menjalankan filter pada baris dan harus mengembalikan TRUE atau FALSE berdasarkan beberapa kondisi, yang memungkinkan baris dimigrasi atau tidak, tetapi dapatkah seseorang mengklarifikasi:
- kapan harus menggunakan persiapan ()
- kapan harus menggunakan prepow ()
- mengapa Anda tidak akan menambahkan filter dalam kueri sql awal untuk memfilter hasil baris yang mungkin Anda hapus / sertakan di salah satu di atas
Terima kasih!
Jawaban:
Ini semua dibahas secara mendalam dalam dokumentasi kelas Migrasi yang disediakan oleh proyek. Khususnya di halaman Metode Migrasi yang Diimplementasikan Secara Umum yang mengatakan hal berikut dan mencakup implementasi fungsi contoh sederhana selanjutnya. Dari dokumen ...
function prep_row ($ row)
fungsi persiapan ($ entitas, stdClass $ row)
The Migrasi modul kerangka yang memungkinkan Anda untuk merangkum proses migrasi dari sepotong sumber data ke lokasi tujuan dan konfigurasi. Migrasi terdiri dari:
API menyediakan kait untuk memengaruhi data yang dipindahkan dalam siklus kehidupan migrasi ini. Dengan mengecualikan data dari migrasi melalui permintaan awal Anda, Anda membatasi berapa banyak kontrol yang Anda miliki atas total data yang dapat Anda pindahkan. Untuk sub-migrasi Anda mungkin menemukan ini berguna. Tetapi dalam migrasi konten umum Anda ingin migrasi Anda mencakup semua hal yang mungkin.
sumber
Jika Anda dapat memilih baris yang tepat dengan menuliskannya dalam query, namun preprareRow () dapat digunakan dalam sistem yang lebih kompleks di mana beberapa parameter mungkin diperlukan sebelum baris dimigrasi. Dalam kasus seperti itu lebih mudah untuk menjalankan semua baris dan melakukan logika pada basis per-baris.
prepar () dijalankan setelah preparow () dan merupakan kesempatan terakhir Anda untuk mengubah entitas sebelum disimpan ke database.
Beberapa informasi lebih lanjut tentang ini dapat ditemukan di sini: https://www.drupal.org/node/1132582
sumber
Ini adalah bagian jawaban dan sama sekali tidak lengkap. Saya juga ingin mengetahui lebih banyak tentang keduanya. Jadi ini mungkin menjadi bagian dari diskusi; walaupun saya telah menulis sebagai jawaban daripada komentar karena cuplikan kode berikut dan contoh bagaimana saya menggunakan kelas di atas.
Biarkan saya mengilustrasikan beberapa kegunaan saya prepowow () sebagai - yang tidak seperti yang dikatakan.
Baru-baru ini saya memberikan beberapa data untuk diimpor dari database non drupal. Entitas yang saya tambahkan memerlukan bidang yang harus dimasukkan yang tidak saya miliki dalam impor data saya.
Jadi sebelum kelas sumber saya dibuat, saya bisa menambahkan
dan kemudian dalam fungsi prepRow saya bisa melakukan hal berikut
Anda juga dapat menjalankan pernyataan php if / else di sini jika perlu.
Saya juga menggunakan fungsi persiapan dalam kode saya dan saya menggunakannya untuk memberikan nilai pada entitas.
Saya hanya harus menggunakan ini dalam skenario ini karena saya membuat plugin simpul kustom saya sendiri.
Juga jika Anda perlu membuat perhitungan tentang itu maka Anda dapat melakukannya di prepowow yang berjalan sebelum prepow ()
Misalnya dalam impor, saya memiliki nilai berlabel 'Kota' - dan dapat mengubahnya menjadi Term Term.
Saya harap ini membantu.
sumber