Magento 2コアのバグはすべての2.1.x、2.2で見つかりました


8

再現する手順

  1. レポートに移動->顧客別

  2. 検索ボックスに顧客名を入力してください

  3. 検索をクリックしてください

表示されます

致命的なエラー:列が見つかりません:1054不明な列 'customer_name'( 'where句')、クエリは次のとおりです:SELECT COUNT(DISTINCT detail.customer_id)FROM review AS main_table

すべてのMagento 2.1.xでこのバグを発見しました。そして問題をgithubに投稿しました

https://github.com/magento/magento2/issues/10301

これについて誰か知っていますか?

編集:

この問題はMagento 2.1.8、2.2、および2.2 EEでも引き続き発生します


はい、代わりに使用firstnameする必要がありcustomer_nameます。Becuaseは、customer_name任意のテーブルと一致していない
Camit1dk

この問題に利用できるパッチはありますか?
パテル王子2017

以下のリンクで私のコメントを確認してください。解決済みのgithub.com/magento/magento2/issues/10301
Camit1dk

回答:


6

これが解決策です...

新しいモジュールを作成する

ベンダー/モジュール/etc/module.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
    <module name="Vendor_Module" setup_version="2.1.0">
        <sequence>
            <module name="Magento_Review"/>
        </sequence>
    </module>
</config>

ベンダー/モジュール/etc/adminhtml/di.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <preference for="Magento\Reports\Block\Adminhtml\Review\Customer" type="Vendor\Module\Block\Adminhtml\Review\Customer" />
    <preference for="Magento\Reports\Model\ResourceModel\Review\Customer\Collection" type="Vendor\Module\Model\ResourceModel\Review\Customer\Collection" />
</config>

Vendor / Module / Block / Adminhtml / Review / Customer.php

<?php

namespace Vendor\Module\Block\Adminhtml\Review;

class Customer extends \Magento\Reports\Block\Adminhtml\Review\Customer
{
    protected function _prepareLayout()
    {
        parent::_prepareLayout();

        $customerNameColumn = $this->getChildBlock('grid')
            ->getChildBlock('grid.columnSet')
            ->getChildBlock('customer_name');
        $customerNameColumn->setFilterIndex([
            'customer.firstname',
            'customer.lastname'
        ]);

        return $this;
    }
}

ベンダー/モジュール/モデル/ResourceModel/Review/Customer/Collection.php

<?php
namespace Vendor\Module\Model\ResourceModel\Review\Customer;

class Collection extends \Magento\Reports\Model\ResourceModel\Review\Customer\Collection
{
    public function addFieldToFilter($field, $condition = null)
    {
        if (is_array($field) && array_key_exists('like', $condition)) {
            $condition = array_fill(0, count($field), $condition);
        }

        return parent::addFieldToFilter($field, $condition);
    }
}

良い答え:)あなたのための+1。また、6日以内に回答が見つからない場合は、+ 50の境界を指定します。はい、コアファイルをオーバーライドしてこの問題を解決できることはわかっています。しかし、外部モジュールは必要ありません。magento2 githubのプルコード用のパッチが必要です。パッチが見つかった場合。また、magento 2 githubリポジトリでコードをプルすることもできます。
Patel氏

このモジュールに基づいて独自のパッチを作成できますが、私はその方法が好きではありません。あなたはコアコードを変更します。
Nicholas Miller

はい、そうです。コアを変更すべきではありませんが、これはMagentoが次のバージョンでこの問題を実装するのに役立ちます。とにかく、パッチを作ってみます。
Patel氏

@PrincePatelのアイデアは進むべき道です。コアにマージできるように、このバグにパッチを提供してください-> GitHubにアクセスして追加する必要があります。
マックス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.