注文のすべてのフィールドを入手するにはどうすればよいですか。
-
13-12-2019 - |
質問
マゼントと一緒に働いています、私は注文していて、私はこのようにそれらを印刷します:
echo $order->getId();
echo $order->getCustomerEmail();
.
私の問題は私がGETメソッドのすべての名前を知らないので、利用可能なすべてのリストをどこで見つけることができるのか
私の目標は外部データベース内のすべての注文をエクスポートすることです。
解決
注文(または任意のオブジェクト)のデータは、配列である保護されたメンバ変数_data
に保持されています。このデータはデータベーステーブル(リソースモデルによって埋められています)から来ます。
データ配列
この配列を取得してそれを経由でダンプすることができます。
print_r($order->getData());
// or
var_dump($order->getData());
.
print_r()
:
Array
(
[entity_id] => 2
[state] => new
[status] => pending
// ...
.
ゲッター
今すぐこれでMagento Objectのマジックゲッターを使ってすべてを取得できます。各値は、$object->getValue()
が配列からのキーのキャメルケースバージョンであるValue
の形式で検索可能です。
$order->getEntityId();
$order->getState();
$order->getStatus();
.
およびcustomer_id
の場合たとえば、$order->getCustomerId()
オーバーライド
ゲッターは上書きされます。ゲッター構造はVarien_Object
クラスで定義されており、各Magentoモデルはメソッドを明示的に定義することによってマジックゲッターメソッドをオーバーライドすることができます。そのため、コードを見たり、IDEでヒントを使用したりすることで、モデルのメソッドを確認する必要があります。
他のヒント
オブジェクト内のすべての利用可能なフィールドを単に印刷することができます。
print_r($order->getData())
. 注文はEAV形式では保存されないため、すべてのデータがフラットテーブルにあります。sales/order
モデルインスタンスをロードすると、sales_flat_order
テーブルから行をロードしてここで表示する列を参照してください。increment_id
クラスオブジェクトには、$order->getIncrementId()
クラスオブジェクトには、顧客名を返すがMage_Sales_Model_Order
テーブルのgetCustomerName()
列には関係があります。
を試してください
foreach($order->getData() as $key => $value)
{
//$key;
//$value
}
. 1行の解決策:
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);
.
から: https://stackoverflow.com/questions/25245862/Get.-All-field-names-from-magento-model