Magento 2 Core Bug in allen 2.1.x, 2.2 gefunden

8

Schritte zum Reproduzieren

  1. Gehen Sie zu Berichte -> Nach Kunden

  2. Geben Sie den Kundennamen in das Suchfeld ein

  3. Klicken Sie auf Suchen

Wird sich zeigen

Schwerwiegender Fehler: Spalte nicht gefunden: 1054 Unbekannte Spalte 'Kundenname' in 'where-Klausel', Abfrage war: SELECT COUNT (DISTINCT detail.customer_id) FROM review AS main_table

Ich habe diesen Fehler in allen Magento 2.1.x gefunden. Und postete Ausgabe auf Github

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

Hat jemand eine Idee dazu?

BEARBEITEN:

Dieses Problem besteht weiterhin in Magento 2.1.8, 2.2 und 2.2 EE

Prinz Patel
quelle
Ja, Alternative müssen wir firstnamestattdessen verwenden customer_name. Weil customer_namees mit keinem Tisch
übereinstimmt
Sie haben einen Patch für dieses Problem?
Prinz Patel
Überprüfen Sie meinen Kommentar im folgenden Link, Es ist gelöst github.com/magento/magento2/issues/10301
Camit1dk

Antworten:

6

Hier ist die Lösung ...

Neues Modul erstellen

Hersteller / Modul / 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>

Hersteller / Modul / 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>

Anbieter / Modul / Block / 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;
    }
}

Anbieter / Modul / Modell / ResourceModel / Review / Kunde / 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
quelle
Gute Antwort :) +1 für dich. Auch wenn ich innerhalb von 6 Tagen keine Antwort gefunden habe, gebe ich +50 Grenze. Ja, ich weiß, wir können die Kerndatei überschreiben und dieses Problem lösen. Aber ich brauche kein externes Modul dafür, ich brauche einen Patch für den Pull-Code auf Magento 2 Github. Wenn Sie einen Patch dafür gefunden haben. Sie können auch Code im Magento 2 Github-Repository abrufen.
Prinz Patel
Sie können Ihren eigenen Patch basierend auf diesem Modul erstellen, aber das gefällt mir nicht. Sie ändern den Kerncode.
Nicholas Miller
Ja, Sie haben Recht, wir sollten den Kern nicht ändern, aber dies soll Magento helfen, dieses Problem in der nächsten Version zu implementieren. Wie auch immer, ich werde versuchen, einen Patch dafür zu erstellen.
Prinz Patel
Die Idee von @ PrincePatel ist der richtige Weg: Stellen Sie einen Patch für diesen Fehler bereit, damit er in den Kern integriert wird -> Sie sollten versuchen, auf GitHub zuzugreifen und einen hinzuzufügen.
Max