ฉันทำงานกับmigrate
โมดูลเป็นครั้งแรกและฉันทำงานกับdb_select
api นิดหน่อย แต่ฉันพบข้อผิดพลาด
ฉันกำลังพยายามแปลงป้ายกำกับเก่า ๆ ให้เป็นอนุกรมวิธานแบบ drupal เมื่อฉันเรียกดู/admin/content/migrate
เพจแบบสอบถามของฉันจะทำอย่างถูกต้องและแสดงจำนวนแถวที่ถูกต้องที่ควรย้ายข้อมูล อย่างไรก็ตามเมื่อฉันพยายามเรียกใช้การนำเข้าฉันได้รับข้อผิดพลาดนี้:
การโยกย้ายล้มเหลวโดยมีข้อยกเว้นปลั๊กอินต้นทาง: SQLSTATE [23000]: การละเมิดข้อ จำกัด ด้านความสมบูรณ์: 1052 คอลัมน์ 'labelId' ในส่วนคำสั่งไม่ชัดเจน
นี่คือรหัสที่ฉันมีในคลาส LabelMigration ของฉัน:
$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()
โทรออกชัดว่าข้อผิดพลาดเกี่ยวกับon
คำสั่งหายไป แต่ฉันไม่เข้าใจว่าlabelId
มันคลุมเครือเพราะฉันมักจะอ้างถึงมันด้วยนามแฝงของตาราง
แนวคิดใดที่ข้อผิดพลาดนี้มาจากไหน มันมาจาก MigrateSQLMap ที่ด้านบนใช่ไหม ถ้าเป็นเช่นนั้นฉันจะอ้างอิงถึงสิ่งนั้นlabelId
ด้วยนามแฝงเพื่อทำให้มันไม่คลุมเครือได้อย่างไร ฉันพยายามทำมันl.labelId
แต่มันไม่ได้ผล