Come posso ottenere tutti i campi di un ordine?
-
13-12-2019 - |
Domanda
Sto lavorando con Magento, ho ordini e lo stampa come questo:
echo $order->getId();
echo $order->getCustomerEmail();
.
Il mio problema è che non conosco tutto il nome dei metodi Get, quindi come o dove posso trovare tutto l'elenco di essere disponibili?
Il mio obiettivo è esportare tutti gli ordini in un database esterno, c'è un modo più veloce per farlo senza passare per ogni campo?
Soluzione
I dati sull'ordine (o qualsiasi oggetto) si svolgono in una variabile di medicina protetta _data
TagCode che è un array. Questi dati derivano dalla tabella del database (s) (viene riempito dal modello di risorsa).
array dati
È possibile ottenere questo array e scaricarlo tramite:
print_r($order->getData());
// or
var_dump($order->getData());
.
Otterrai un'output come questo con print_r()
:
Array
(
[entity_id] => 2
[state] => new
[status] => pending
// ...
.
getter
Ora puoi ottenere tutti questi dati con i getter magici dell'oggetto di Magento. Ogni valore è recuperabile sotto forma di $object->getValue()
in cui Value
è la versione assa in cammello della chiave dall'array.
Per i valori di cui sopra, utilizzare:
$order->getEntityId();
$order->getState();
$order->getStatus();
.
e per customer_id
ad esempio è possibile chiamare $order->getCustomerId()
Override
I getter possono essere sovrascritti. La costruzione Getters è definita nella classe Varien_Object
e ogni modello Magento potrebbe sovrascrivere un metodo Magic Gettter definendo esplicitamente un metodo. Quindi dovresti anche controllare i metodi del modello guardando il codice o l'utilizzo che suggerisce il tuo IDE.
Altri suggerimenti
Puoi semplicemente stampare tutto il campo disponibile nel tuo oggetto con:
print_r($order->getData())
. Gli ordini non sono memorizzati in un formato EAV in modo che tutti i dati siano in un tavolo piatto.Caricando un'istanza del modello sales/order
, carica una riga dalla tabella sales_flat_order
, quindi qualsiasi colonna che vedi qui, è possibile tirare dall'oggetto dell'ordine, I.e Per tirare la colonna increment_id
, è possibile chiamare $order->getIncrementId()
.Anche essere consapevole del fatto che ci sono alcuni metodi nell'oggetto Classe Mage_Sales_Model_Order
per creare una certa quantità di dati per te, ad esempio getCustomerName()
che restituisce il nome del cliente ma non si riferisce a una colonna customer_name
nella tabella sales_flat_order
.
Prova
foreach($order->getData() as $key => $value)
{
//$key;
//$value
}
. Una soluzione di una riga:
array_keys($order->getData())
. $resource = Mage::getSingleton('core/resource');
$readConnection = $resource->getConnection('core_read');
/**
* Get the table name
*/
$tableName = $resource->getTableName('sales/order');
$saleafield=$readConnection->describeTable($tableName);
var_dump($saleafield);
.
Da: https://stackoverflow.com/questions/25245862/-All-Names-field-names-from-magento-modello