Как я могу сохранить данные в поле eav? - PullRequest
0 голосов
/ 22 сентября 2011

Я успешно установил атрибут EAV, выполнив $installer->addAttribute('order', 'field', etc).Я также успешно запускаю наблюдателя, когда заказ сохраняется в событии sales_order_save_before / sales_order_save_after.Теперь я пытаюсь поместить данные в поле на наблюдателе

$observer->getOrder()->setMyField('someuniquestring'); 

Я пытался сделать это до сохранения и после, и в этом случае я добавляю

$observer->getOrder()->getResource()->save($order);

После поиска по всему моемуВ базе данных уникальная строка не существует ни в одной таблице.Также, если я использую getMyField () и отображаю его на экране в обозревателе, и die () показывает значение, которое я установил.

Любая помощь о том, как сохранить это в БД?

1 Ответ

0 голосов
/ 23 сентября 2011

Я нашел ответ на свой вопрос после долгой отладки.

В какой-то момент времени magento изменил способ добавления полей данных к модели заказа в базе данных.Ранее поля EAV использовались, но теперь magento просто изменяет сам плоский стол.Поэтому в моем скрипте установки я просто делаю

$installer->getConnection->addColumn($installer->getTable('sales_flat_order', 'site_license_id', 'int(1) ...');

Затем в моем обозревателе перед сохранением я добавляю $ Наблюдатель-> getEvent () -> getOrder () -> setMyField ($ myval);

Это все, что есть.

...