Wie erhalte ich alle Felder einer Bestellung?
-
13-12-2019 - |
Frage
Ich arbeite mit Magento, ich habe Bestellungen und drucke sie so aus:
echo $order->getId();
echo $order->getCustomerEmail();
Mein Problem ist, dass ich nicht alle Namen der get-Methoden kenne, also wie oder wo finde ich die gesamte Liste der verfügbaren get?
Mein Ziel ist es, alle Bestellungen in eine externe Datenbank zu exportieren. Gibt es eine schnellere Möglichkeit, dies ohne Pass für jedes Feld zu tun?
Lösung
Die Daten der Bestellung (oder eines beliebigen Objekts) werden in einer geschützten Mitgliedsvariablen gespeichert _data
welches ist ein Array.Diese Daten stammen aus den Datenbanktabellen (sie werden vom Ressourcenmodell gefüllt).
Datenarray
Sie können dieses Array abrufen und über sichern:
print_r($order->getData());
// or
var_dump($order->getData());
Sie erhalten eine Ausgabe wie diese mit print_r()
:
Array
(
[entity_id] => 2
[state] => new
[status] => pending
// ...
Getter
Jetzt können Sie all diese Daten mit den magischen Gettern von Magento Object abrufen.Jeder Wert ist abrufbar in Form von $object->getValue()
wo Value
ist die Camel-Version des Schlüssels aus dem Array.
Für die obigen Werte verwenden Sie:
$order->getEntityId();
$order->getState();
$order->getStatus();
Und für customer_id
zum Beispiel können Sie anrufen $order->getCustomerId()
Overrides
Die Getter können überschrieben werden.Die Getter-Konstruktion ist in der definiert Varien_Object
klasse und jedes Magento-Modell könnten eine magische Getter-Methode überschreiben, indem sie explizit eine Methode definieren.Sie sollten also auch die Methoden des Modells überprüfen, indem Sie sich den Code ansehen oder Hinweise in Ihrer IDE verwenden.
Andere Tipps
Sie können einfach das gesamte verfügbare Feld in Ihrem Objekt drucken mit:
generasacodicetagpre.Bestellungen werden nicht in einem EAV-Format gespeichert, sodass sich alle Daten in einer flachen Tabelle befinden.Durch Laden eines sales/order
modellinstanz Laden Sie eine Zeile aus dem sales_flat_order
tabelle also jede Spalte, die Sie hier sehen, können Sie aus dem Bestellobjekt ziehen, dh um die zu ziehen increment_id
spalte können Sie anrufen $order->getIncrementId()
.Beachten Sie auch, dass es einige Methoden in der gibt Mage_Sales_Model_Order
klassenobjekt, um eine bestimmte Datenmenge für Sie zu erstellen, zum Beispiel getCustomerName()
die den Kundennamen zurückgibt, sich aber nicht auf a bezieht customer_name
spalte in der sales_flat_order
Tabelle .
versuchen Sie
generasacodicetagpre.Eine Leitungslösung:
generasacodicetagpre.von: https://stackoverflow.com/questions/25245862/get-Alle-Feldnamen-from-magento-modell