いくつかの移行ツールを使用して注文をMagentoにインポートしました。リピーターが注文しようとすると、Magentoは注文を阻止し、「このカスタマーメールは既に存在します」と言います。これは、彼らがすでにMagentoにログインしているという事実にもかかわらずです。
Magentoデータベースに誤ってインポート/移行しましたか?それとも他の何かがこれを引き起こしている可能性がありますか?
どんな提案でも大歓迎です。
いくつかの移行ツールを使用して注文をMagentoにインポートしました。リピーターが注文しようとすると、Magentoは注文を阻止し、「このカスタマーメールは既に存在します」と言います。これは、彼らがすでにMagentoにログインしているという事実にもかかわらずです。
Magentoデータベースに誤ってインポート/移行しましたか?それとも他の何かがこれを引き起こしている可能性がありますか?
どんな提案でも大歓迎です。
発生する例外は、顧客リソースモデルの_beforeSave 関数によって生成されます。この関数は、指定された電子メールアドレスを持つ顧客が存在するかどうかを確認します。小切手のコード:
$adapter = $this->_getWriteAdapter();
$bind = array('email' => $customer->getEmail());
$select = $adapter->select()
->from($this->getEntityTable(), array($this->getEntityIdField()))
->where('email = :email');
if ($customer->getSharingConfig()->isWebsiteScope()) {
$bind['website_id'] = (int)$customer->getWebsiteId();
$select->where('website_id = :website_id');
}
if ($customer->getId()) {
$bind['entity_id'] = (int)$customer->getId();
$select->where('entity_id != :entity_id');
}
$result = $adapter->fetchOne($select, $bind);
if ($result) {
throw Mage::exception(
'Mage_Customer', Mage::helper('customer')->__('This customer email already exists'),
Mage_Customer_Model_Customer::EXCEPTION_EMAIL_EXISTS
);
}
あなたの顧客はログインしています。これは、条件$customer->getId()
が真であることを意味します。ただし、例外が発生するため、同じメールアドレスの顧客アカウントが重複していることをお勧めします。
インポートツールが顧客データに重複を作成した可能性がありますか?それが私が考えることができる唯一の理由です。このクエリでデータベースを確認してください。
select email, count(*) from customer_entity group by email having count(*) > 1