0

Magentoの管理メニューの[顧客]->[顧客の管理]で、文字列が複数の単語で構成されている場合、名前を使用して顧客を検索することはできません。このタスクを実行するコアコードはどこにありますか?このセクションの拡張機能はありません。

問題の例:

John Smithという名前の顧客を検索したい場合、「johnsmith」を検索しても結果は返されません。LIKE %john%「john」または「smith」の検索は個別に機能しますが、SQLクエリまたはに類似した「john」または「smith」を含む名前が表示されますLIKE %smith%

4

1 に答える 1

1

Magentoバージョン1.6を使用しているようです

これはバグであり、1.7で修正されています

変更が必要なコードは次のとおりです:app / code / core / Mage / Customer / Model / Resource / Customer / Collection.php

バージョン1.7から取得したコードを投稿します。

Mage_Customer_Model_Resource_Customer_Collection    

    public function addNameToSelect()
    {
        $fields = array();
        $customerAccount = Mage::getConfig()->getFieldset('customer_account');
        foreach ($customerAccount as $code => $node) {
            if ($node->is('name')) {
                $fields[$code] = $code;
            }
        }

        $adapter = $this->getConnection();
        $concatenate = array();
        if (isset($fields['prefix'])) {
            $concatenate[] = $adapter->getCheckSql(
                '{{prefix}} IS NOT NULL AND {{prefix}} != \'\'',
                $adapter->getConcatSql(array('LTRIM(RTRIM({{prefix}}))', '\' \'')),
                '\'\'');
        }
        $concatenate[] = 'LTRIM(RTRIM({{firstname}}))';
        $concatenate[] = '\' \'';
        if (isset($fields['middlename'])) {
            $concatenate[] = $adapter->getCheckSql(
                '{{middlename}} IS NOT NULL AND {{middlename}} != \'\'',
                $adapter->getConcatSql(array('LTRIM(RTRIM({{middlename}}))', '\' \'')),
                '\'\'');
        }
        $concatenate[] = 'LTRIM(RTRIM({{lastname}}))';
        if (isset($fields['suffix'])) {
            $concatenate[] = $adapter
                    ->getCheckSql('{{suffix}} IS NOT NULL AND {{suffix}} != \'\'',
                $adapter->getConcatSql(array('\' \'', 'LTRIM(RTRIM({{suffix}}))')),
                '\'\'');
        }

        $nameExpr = $adapter->getConcatSql($concatenate);

        $this->addExpressionAttributeToSelect('name', $nameExpr, $fields);

        return $this;
    }
于 2012-07-29T10:45:53.800 に答える