4

いくつかの移行ツールを使用して注文をMagentoにインポートしました。リピーターが注文しようとすると、Magentoは注文を阻止し、「このカスタマーメールは既に存在します」と言います。これは、彼らがすでにMagentoにログインしているという事実にもかかわらずです。

Magentoデータベースに誤ってインポート/移行しましたか?それとも他の何かがこれを引き起こしている可能性がありますか?

どんな提案でも大歓迎です。

4

1 に答える 1

9

発生する例外は、顧客リソースモデルの_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
于 2013-02-20T16:02:38.207 に答える