Magento 2 Core Bug ditemukan di semua 2.1.x, 2.2


8

Langkah-langkah mereproduksi

  1. Buka Laporan -> Oleh Pelanggan

  2. Masukkan nama pelanggan di kotak pencarian

  3. Klik pada pencarian

Itu akan ditampilkan

Kesalahan fatal: Kolom tidak ditemukan: 1054 Kolom tidak dikenal 'customer_name' di 'where clause', permintaannya adalah: SELECT COUNT (DISTINCT detail.customer_id) DARI ulasan AS main_table

Saya telah menemukan bug ini di semua Magento 2.1.x. Dan masalah diposting di github

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

Adakah yang tahu tentang ini?

EDIT:

Masalah ini masih berlanjut di Magento 2.1.8, 2.2 dan 2.2 EE


Ya, alternatif yang harus kita gunakan firstnamealih-alih customer_name. Karena customer_nametidak cocok dengan meja apa pun
— Camit1dk

Anda memiliki patch yang tersedia untuk masalah ini?
— Pangeran Patel

Lihat komentar saya di tautan di bawah ini, Sudah
— Camit1dk

Jawaban:


6

Ini solusinya ...

Buat modul baru

Vendor / Module / 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>

Vendor / Module / 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 / Modul / Blok / Adminhtml / Tinjauan / Pelanggan.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;
    }
}

Vendor / Modul / Model / ResourceModel / Tinjauan / Pelanggan / 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);
    }
}

Jawaban bagus :) +1 untuk Anda. Juga jika saya tidak menemukan jawaban dalam 6 hari saya akan memberikan batas +50. Ya saya tahu kami dapat mengganti file inti dan menyelesaikan masalah ini. Tapi saya tidak perlu modul eksternal untuk itu, saya perlu tambalan untuk kode tarik pada Magento 2 github. Jika Anda menemukan patch untuk itu. Anda juga dapat menarik kode di repositori magento 2 github.
— Pangeran Patel

Anda dapat membuat tambalan Anda sendiri berdasarkan modul ini, tetapi saya tidak suka cara itu. Anda mengubah kode inti.
— Nicholas Miller

Ya, Anda benar, kami seharusnya tidak mengubah inti tetapi ini untuk membantu Magento untuk mengimplementasikan masalah ini di versi berikutnya. Bagaimanapun, saya akan mencoba membuat tambalan untuk itu.
— Pangeran Patel

Ide @ PrincePatel adalah caranya: menyediakan tambalan untuk bug ini untuk membiarkannya bergabung ke dalam inti -> Anda harus mencoba untuk mendapatkan GitHub dan menambahkannya.
— Maks
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.