在所有2.1.x,2.2中都发现了Magento 2 Core Bug


8

重现步骤

  1. 转到报告->按客户

  2. 在搜索框中输入客户名称

  3. 点击搜索

它会显示

严重错误:找不到列:1054“ where子句”中的未知列“ customer_name”,查询为: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。由于customer_name与任何表都不匹配
Camit1dk '17

您有任何可用于此问题的补丁程序吗?
帕特尔王子(Pater Patel)

在下面的链接中检查我的评论,它已解决github.com/magento/magento2/issues/10301
Camit1dk

Answers:


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>

供应商/模块/块/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;
    }
}

供应商/模块/模型/资源模型/审查/客户/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边界。是的,我知道我们可以覆盖核心文件并解决此问题。但是我不需要外部模块,我需要在magento 2 github上的拉动代码补丁。如果找到任何补丁程序。您还可以在magento 2 github存储库上提取代码。
帕特尔王子(Patel Patel)

您可以基于此模块创建自己的补丁,但我不喜欢这种方式。您更改核心代码。
Nicholas Miller

是的,您是对的,我们不应该更改核心,但这是为了帮助Magento在下一版本中实现此问题。无论如何,我将尝试为其创建一个补丁。
帕特尔王子(Patel Patel)

@PrincePatel的想法是解决问题的方法:为此漏洞提供一个补丁,以使其合并到核心中->您应尝试在GitHub上添加一个。
最多
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.