আমি migrate
প্রথমবার মডিউলটির সাথে কাজ করছি এবং db_select
এপিআই-এর সাথে আমি কিছুটা কাজ করেছি , তবে আমি একটি ত্রুটির মধ্যে চলেছি।
আমি কিছু পুরানো লেবেলকে একটি ড্রুপাল ট্যাক্সনোমিতে রূপান্তর করার চেষ্টা করছি। আমি /admin/content/migrate
পৃষ্ঠাটিতে ব্রাউজ করার সময় এটি আমার ক্যোয়ারীটি সঠিকভাবে করে এবং মাইগ্রেশন করা উচিত এমন সারিগুলির সঠিক সংখ্যা দেখায়। তবে, আমি যখন আসলে আমদানি চালানোর চেষ্টা করি তখন আমি এই ত্রুটিটি পাই:
উত্স প্লাগইন ব্যতিক্রম সহ অভিবাসন ব্যর্থ হয়েছে: এসকিউএলস্টেট [২৩০০০]: একীকরণের সীমাবদ্ধতা লঙ্ঘন: ১০৫২ ধারাটিতে লেবেলআইডি 'অস্পষ্ট
আমার লেবেল অভিবাসন শ্রেণিতে আমার কাছে কোডটি এখানে রয়েছে:
$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
, কিন্তু এটি কার্যকর হয়নি।