Saya bekerja dengan migratemodul untuk pertama kalinya dan saya telah bekerja dengan db_selectapi sedikit, tetapi saya mengalami kesalahan.
Saya mencoba mengubah beberapa label lama menjadi taksonomi drupal. Ketika saya menjelajah ke /admin/content/migratehalaman, ia melakukan kueri dengan benar dan menunjukkan jumlah baris yang tepat yang harus dimigrasi. Namun, ketika saya benar-benar mencoba menjalankan impor, saya mendapatkan kesalahan ini:
Migrasi gagal dengan pengecualian plugin sumber: SQLSTATE [23000]: Pelanggaran batasan integritas: 1052 Kolom 'labelId' di dalam klausa ambigu
Berikut adalah kode yang saya miliki di kelas LabelMigration saya:
$this->map = new MigrateSQLMap($this->machineName,
array(
'labelId' => array('type' => 'int', 'not null' => TRUE)
),
MigrateDestinationTerm::getKeySchema()
);
$query = db_select('migrate_account_label', 'l')
->fields('l', array('labelId', 'label'))
;
$query->leftJoin('migrate_asset_labels_membership', 'lm', 'l.labelId = lm.labelId');
$query->leftJoin('migrate_asset', 'a', 'lm.assetId = a.assetId');
$query->addExpression('count(*)', 'num');
$query->condition('a.type', 'B');
$query->groupBy('l.labelId');
$query->groupBy('l.label');
$this->source = new MigrateSourceSQL($query);
// Set up our destination - terms in the vocabulary
$this->destination = new MigrateDestinationTerm('article_labels');
$this->addFieldMapping('name', 'label');
$this->addFieldMapping('description')
->defaultValue('');
Jika saya menghapus leftJoin()panggilan maka jelas kesalahan tentang onpernyataan itu hilang, tapi saya tidak mengerti bagaimana labelIdambigu karena saya selalu merujuknya dengan tabel alias.
Adakah ide dari mana kesalahan ini berasal? Apakah ini berasal dari MigrateSQLMap di bagian atas? Jika demikian, bagaimana saya bisa merujuknya labelIddengan alias agar tidak ambigu? Saya mencoba membuatnya l.labelId, tetapi itu tidak berhasil.