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


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);
    }
}

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.