Tôi làm việc với migrate
mô-đun lần đầu tiên và tôi đã làm việc với db_select
api một chút, nhưng tôi đang gặp lỗi.
Tôi đang cố gắng chuyển đổi một số nhãn cũ thành phân loại drupal. Khi tôi duyệt đến /admin/content/migrate
trang, nó thực hiện đúng truy vấn của tôi và hiển thị đúng số lượng hàng cần được di chuyển. Tuy nhiên, khi tôi thực sự cố gắng chạy nhập, tôi gặp lỗi này:
Di chuyển không thành công với ngoại lệ plugin nguồn: SQLSTATE [23000]: Vi phạm ràng buộc toàn vẹn: 1052 Cột 'nhãnId' trong mệnh đề không rõ ràng
Đây là mã tôi có trong lớp LabelMigration của mình:
$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('');
Nếu tôi xóa các leftJoin()
cuộc gọi thì rõ ràng lỗi về on
câu lệnh sẽ biến mất, nhưng tôi không hiểu làm thế nào labelId
là mơ hồ vì tôi luôn tham chiếu nó với bí danh bảng.
Bất kỳ ý tưởng mà lỗi này đến từ đâu? Có phải nó đến từ MigrateQueryMap ở đầu không? Nếu vậy, làm thế nào tôi có thể tham chiếu điều đó labelId
với một bí danh để làm cho nó không mơ hồ? Tôi đã thử làm nó l.labelId
, nhưng nó không hoạt động.