Magento 2 Core Bug trovato in tutti i 2.1.x, 2.2


8

I passaggi per riprodurre

  1. Vai a Rapporti -> Per clienti

  2. Inserisci il nome del cliente nella casella di ricerca

  3. Clicca sulla ricerca

Mostrerà

Errore irreversibile: colonna non trovata: 1054 Colonna sconosciuta 'nome_cliente' in 'dove clausola', la query era: SELEZIONA COUNT (DISTINCT detail.customer_id) DA recensione AS main_table

Ho trovato questo bug in tutto Magento 2.1.x. E pubblicato problema su github

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

Qualcuno ne ha idea?

MODIFICARE:

Questo problema persiste ancora in Magento 2.1.8, 2.2 e 2.2 EE


Sì, al firstnameposto di dobbiamo usare un'alternativa customer_name. Perché customer_namenon corrisponde a nessun tavolo
— Camit1dk

Hai qualche patch disponibile per questo problema?
— Prince Patel,

Controlla il mio commento nel link in basso, Risolto github.com/magento/magento2/issues/10301
— Camit1dk

Risposte:


6

Ecco la soluzione ...

Crea un nuovo modulo

Venditore / modulo / 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>

Venditore / modulo / 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>

Venditore / modulo / blocco / 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;
    }
}

Venditore / modulo / modello / ResourceModel / Review / Cliente / 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);
    }
}

Buona risposta :) +1 per te. Inoltre, se non trovassi alcuna risposta entro 6 giorni, darò un limite di +50. Sì, lo so che possiamo ignorare il file core e risolvere questo problema. Ma non ho bisogno di un modulo esterno per questo, ho bisogno di patch per pull code su Magento 2 Github. Se hai trovato qualche patch per questo. puoi anche estrarre il codice dal repository github di magento 2.
— Prince Patel,

puoi creare la tua patch basata su questo modulo, ma non mi piace in questo modo. si cambia il codice principale.
— Nicholas Miller,

Sì, hai ragione, non dovremmo cambiare core ma questo è di aiuto a Magento per implementare questo problema nella prossima versione. Comunque, proverò a creare una patch per questo.
— Prince Patel,

@ L'idea di PrincePatel è la strada da percorrere: fornire una patch per questo bug per far sì che si unisca nel core -> dovresti provare a entrare in GitHub e aggiungerne uno.
— Max
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.