Ben ile çalışıyorum migrate
ilk kez modülü ve ben çalıştığım db_select
API biraz ama bir hata içine çalıştırıyorum.
Bazı eski etiketleri bir drupal taksonomiye dönüştürmeye çalışıyorum. Sayfaya göz attığımda /admin/content/migrate
, sorgumu doğru bir şekilde yapıyor ve taşınması gereken doğru satır sayısını gösteriyor. Ancak, aslında alma çalıştırmak çalıştığınızda, bu hatayı alıyorum:
Kaynak eklentisi istisnasıyla taşıma başarısız oldu: SQLSTATE [23000]: Bütünlük kısıtlaması ihlali: 1052 yan tümcesinde 'labelId' sütunu belirsiz
İşte benim LabelMigration sınıfındaki kod:
$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('');
leftJoin()
Çağrıları kaldırırsam, o zaman on
ifade ile ilgili hata gider, ama labelId
her zaman bir tablo diğer adı ile başvuruyorum çünkü belirsiz olduğunu anlamıyorum .
Bu hatanın nereden geldiğine dair bir fikrin var mı? En üstteki MigrateSQLMap'ten mi geliyor? Öyleyse, labelId
belirsiz olmayan hale getirmek için bir takma adla nasıl başvurabilirim ? Yapmayı denedim l.labelId
, ama işe yaramadı.