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.