Я использую Magento ver. 1.6.2.0.
После прочтения ряда постов и вопросов (в SO и других местах) я попытался добавить атрибут в свою таблицу sales_flat_order. В предыдущих версиях Magento модель продаж / заказов использовала метод EAV, но, насколько я могу судить, после 1.4 она была перенесена на плоский стол.
Итак, вот мой файл установки mysql:
$installer = $this;
$installer->getConnection()->addColumn($installer->getTable('sales/order'), 'khaos_soc', 'varchar(255) NULL');
Который добавил столбец в мою таблицу sales_flat_order.
Моя проблема в том, что я не могу установить данные для вставки в это поле. У меня есть наблюдатель, который вызывается событием 'checkout_submit_all_after'. Код извлекает идентификатор текущего заказа, а затем пытается установить данные 'khaos_soc', вот код:
$test = Mage::getModel('sales/order')->load($order->getId());
// write the khaos soc to the database
$test->setKhaosSoc('just testing');
$test->setCustomerFirstname('Charlie');
$test->save();
Метод setCustomerFirstname () работает и меняет имя на Чарли, но метод setKhaosSoc () ничего не сохраняет в базе данных. Я также пытался использовать setData («khaos_soc», «просто тестирование») для выполнения действий, которые тоже не работают.
Я проверил это, вручную установив значение для 'khaos_soc' в базе данных, затем вызвал соответствующий порядок и повторил результат getKhaosSoc (), и это сработало, но я все еще не могу его установить.
Итак, я могу получить созданные вручную записи для своего пользовательского атрибута, но не могу их установить. Кто-нибудь может подсказать, почему это так?
С уважением,
Джеймс
Я попробовал подход, предложенный Зявой, но он все равно не спасает. Вот мой код обновления:
$installer = $this;
$installer->startSetup();
$installer->addAttribute(
'order',
'khaos_soc',
array(
'type' => 'varchar', /* varchar, text, decimal, datetime */
'grid' => false /* or true if you wan't use this attribute on orders grid page */
)
);
$installer->endSetup();
Вот мой config.xml:
<?xml version="1.0"?>
<!--
/**
* @category Symphony
* @package Symphony_Khaosorders
* @author ModuleCreator
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
-->
<config>
<modules>
<Symphony_Khaosorders>
<version>0.1.8</version>
</Symphony_Khaosorders>
</modules>
<frontend>
<routers>
<khaosorders>
<use>standard</use>
<args>
<module>Symphony_Khaosorders</module>
<frontName>khaosorders</frontName>
</args>
</khaosorders>
</routers>
<layout>
<updates>
<khaosorders>
<file>khaosorders.xml</file>
</khaosorders>
</updates>
</layout>
</frontend>
<admin>
<routers>
<khaosorders>
<use>admin</use>
<args>
<module>Symphony_Khaosorders</module>
<frontName>khaosorders</frontName>
</args>
</khaosorders>
</routers>
</admin>
<adminhtml>
<menu>
<khaosorders module="khaosorders">
<title>Khaosorders</title>
<sort_order>71</sort_order>
<children>
<items module="khaosorders">
<title>Manage Items</title>
<sort_order>0</sort_order>
<action>khaosorders/adminhtml_khaosorders</action>
</items>
</children>
</khaosorders>
</menu>
<acl>
<resources>
<all>
<title>Allow Everything</title>
</all>
<admin>
<children>
<Symphony_Khaosorders>
<title>Khaosorders Module</title>
<sort_order>10</sort_order>
</Symphony_Khaosorders>
</children>
</admin>
</resources>
</acl>
<layout>
<updates>
<khaosorders>
<file>khaosorders.xml</file>
</khaosorders>
</updates>
</layout>
</adminhtml>
<global>
<models>
<khaosorders>
<class>Symphony_Khaosorders_Model</class>
<resourceModel>khaosorders_mysql4</resourceModel>
</khaosorders>
<khaosorders_mysql4>
<class>Symphony_Khaosorders_Model_Mysql4</class>
<entities>
<khaosorders>
<table>khaosorders</table>
</khaosorders>
</entities>
</khaosorders_mysql4>
</models>
<resources>
<khaosorders_setup>
<setup>
<module>Symphony_Khaosorders</module>
<class>Mage_Sales_Model_Mysql4_Setup</class>
</setup>
<connection>
<use>core_setup</use>
</connection>
</khaosorders_setup>
<khaosorders_write>
<connection>
<use>core_write</use>
</connection>
</khaosorders_write>
<khaosorders_read>
<connection>
<use>core_read</use>
</connection>
</khaosorders_read>
</resources>
<blocks>
<khaosorders>
<class>Symphony_Khaosorders_Block</class>
</khaosorders>
</blocks>
<helpers>
<khaosorders>
<class>Symphony_Khaosorders_Helper</class>
</khaosorders>
</helpers>
</global>
</config>
А вот мой метод наблюдателя:
$test = Mage::getModel('sales/order')->load($order->getId());
// write the khaos soc to the database
$test->setKhaosSoc('just testing');
$test->setCustomerFirstname('Charlie');
$test->save();
Что-то мне не хватает?