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

Pangeran Patel
sumber
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);
    }
}
Nicholas Miller
sumber
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