Magento 2 Core Bug encontrado en todos los 2.1.x, 2.2

8

pasos para reproducir

  1. Vaya a Informes -> Por clientes

  2. Ingrese el nombre del cliente en el cuadro de búsqueda

  3. Haga clic en buscar

Se mostrará

Error grave: columna no encontrada: 1054 Columna desconocida 'nombre_cliente' en 'cláusula where', la consulta fue: SELECCIONE EL CONTEO (DISTINCT detail.customer_id) FROM review AS main_table

He encontrado este error en todos los Magento 2.1.x. Y publicado problema en github

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

¿Alguien tiene idea de esto?

EDITAR:

Este problema aún continúa en Magento 2.1.8, 2.2 y 2.2 EE

Príncipe Patel
fuente
Sí, alternativa que tenemos que usar en firstnamelugar de customer_name. Porque customer_nameno coincide con ninguna mesa
Camit1dk
¿Tienes algún parche disponible para este problema?
Prince Patel
Verifique mi comentario en el siguiente enlace, Resuelto github.com/magento/magento2/issues/10301
Camit1dk

Respuestas:

6

Aquí está la solución ...

Crear nuevo módulo

Proveedor / Módulo / 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>

Proveedor / Módulo / 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>

Proveedor / Módulo / Bloque / 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;
    }
}

Proveedor / Módulo / Modelo / Modelo de recursos / Revisión / Cliente / Colección.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
fuente
Buena respuesta :) +1 para ti. Además, si no encuentro ninguna respuesta dentro de los 6 días, daré un límite de +50. Sí, sé que podemos anular el archivo principal y resolver este problema. Pero no necesito un módulo externo para ello, necesito un parche para el código de extracción en magento 2 github. Si encontraste algún parche para ello. También puede extraer código en el repositorio de Github de Magento 2.
Prince Patel
puedes crear tu propio parche basado en este módulo, pero no me gusta de esa manera. Cambias el código central.
Nicholas Miller
Sí, tiene razón, no deberíamos cambiar el núcleo, pero esto es para ayudar a Magento a implementar este problema en la próxima versión. De todos modos, intentaré crear un parche para ello.
Prince Patel
La idea de @ PrincePatel es el camino a seguir: proporcione un parche para este error con el fin de permitir que se fusione con el núcleo -> debe intentar ingresar a GitHub y agregar uno.
Max