Es gibt getSelect()->__toString();
in Magento 1 für den Druck Abfrage von Sammlung zur Verfügung. wie im folgenden Beispiel
$products = Mage::getModel(‘catalog/product’)
->addAttributeToFilter(‘status’, array(‘eq’ => 1));
echo $products->getSelect()->__toString();
Gibt es eine Methode in Magento 2? Ich habe das gefunden, ->printLogQuery(true);
aber es funktioniert nicht für mich.
Update: Unten ist der Code. Ich versuche Bestsellerprodukte zu bekommen. seine Arbeit perfekt, aber ich möchte die Abfrage für das Debuggen drucken.
$this->_collection->getSelect()
->joinLeft(
'sales_order_item',
'e.entity_id = sales_order_item.product_id',
array('qty_ordered'=>'SUM(sales_order_item.qty_ordered)'))
->group('e.entity_id')
->order('qty_ordered '.$this->getCurrentDirectionReverse());
printLogQuery
mitAntworten:
Die obigen Antworten sind korrekt, aber einige Auflistungen stellen nur die Auswahl in der
_beforeLoad()
Methode zusammen, anstatt sie im Konstruktor zu initialisieren. Dies bedeutet, dass Sie eine leere Zeichenfolge erhalten, wenn Sie versuchen, die SQL-Abfrage auszugeben, bevor Sie die Auflistung laden.Ein Beispiel dafür ist
\Magento\Sales\Model\ResourceModel\Report\Bestsellers\Collection
. Wenn Sie also unerwartete Ergebnisse erhalten, laden Sie die Sammlung (dies erstellt die endgültige Auswahlabfrage) und geben Sie die Abfrage aus.quelle
Sie können dieselbe Funktion wie Magento 1 verwenden, um Abfragen in Magento 2 zu drucken.
quelle
Sie können die Funktion __toString () verwenden, um eine Abfrage in Magento 2 zu drucken
quelle
Oder verwenden Sie einfach
quelle