Вопрос

Я работаю с Magento, у меня есть заказы, и я их печатаю вот так:

echo $order->getId();
echo $order->getCustomerEmail();

Моя проблема в том, что я не знаю всех названий методов get, так как и где я могу найти весь список доступных методов get?

Моя цель — экспортировать все заказы во внешнюю базу данных. Есть ли более быстрый способ сделать это без прохода для каждого поля?

Это было полезно?

Решение

Данные о заказе (или любом объекте) хранятся в защищенной переменной-члене. _data который представляет собой массив.Эти данные поступают из таблиц базы данных (они заполняются моделью ресурсов).

Массив данных

Вы можете получить этот массив и сбросить его через:

print_r($order->getData());
// or
var_dump($order->getData());

Вы получите такой результат с помощью print_r():

Array
(
    [entity_id] => 2
    [state] => new
    [status] => pending
// ...

Геттеры

Теперь вы можете получить все эти данные с помощью магических геттеров объекта Magento.Каждое значение можно получить в виде $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() который возвращает имя клиента, но не относится к customer_name столбец в sales_flat_order стол .

попробуйте

foreach($order->getData() as $key => $value)
{
  //$key;
  //$value
}
.

одно строка решение:

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-Все поле-имен - от Magento-Model

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top