Je travaille avec le migratemodule pour la première fois et j'ai db_selectun peu travaillé avec l' API, mais je rencontre une erreur.
J'essaie de convertir d'anciennes étiquettes en une taxonomie drupale. Lorsque je navigue sur la /admin/content/migratepage, elle exécute correctement ma requête et affiche le bon nombre de lignes à migrer. Cependant, lorsque j'essaie d'exécuter l'importation, j'obtiens cette erreur:
Échec de la migration avec l'exception du plug-in source: SQLSTATE [23000]: violation de contrainte d'intégrité: 1052 La colonne 'labelId' dans la clause on est ambiguë
Voici le code que j'ai dans ma classe 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('');
Si je supprime les leftJoin()appels, il est évident que l'erreur sur l' oninstruction disparaît, mais je ne comprends pas en quoi cela labelIdest ambigu car je le référence toujours avec un alias de table.
Des idées d'où vient cette erreur? Provient-il du MigrateSQLMap en haut? Si oui, comment puis-je faire référence à cela labelIdavec un alias pour le rendre non ambigu? J'ai essayé de le faire l.labelId, mais cela n'a pas fonctionné.