Я работаю над встроенным модулем, который сохраняет пользовательскую таблицу. Моя проблема заключается в том, что я добавил поля в эту таблицу, поскольку я работал над ней, новые поля не будут сохраняться с помощью функции → Сохранить().
Я полностью удалил модуль и смонтировал его, позволив ему создать свою собственную таблицу с нуля, если у нее было некоторое внутреннее поле, которое я не знал, но все тот же результат.
После добавления моих данных я делаю var dump на том, что отправляется следующим образом:
$model = Mage::getModel("smsmanager/sms")->addData($post_data)->save();
var_dump($model->getData()); exit;
В результате
array
'form_key' => string 'RUGN3fruWobAf8CZ' (length=16)
'message' => string 'adg asdg sad' (length=14)
'country' => string 'SE' (length=2)
'telephone' => string '+46707332290' (length=12)
'type' => int 2
'id' => string '5' (length=1)
И все выглядит просто отлично. Когда я проверяю вновь созданную строку с ID 5, я получаю следующее:
|-----------------------------------------------------------------------------------------------------------|
|id int(11)| type int(11) | telephone varchar(20) | country varchar(2) | message text | date timestamp |
|-----------------------------------------------------------------------------------------------------------|
| 5 | 2 | +46707332290 | NULL | adg asdg sad | 2013-03-19 21:44:51 |
|-----------------------------------------------------------------------------------------------------------|
Я также попытался вручную вставить другие поля в таблицу базы данных типа "junkfield" и добавить ее с помощью $post_data['junkfield'] = "hello";
, а также получить значение null в качестве значения.
Для меня это похоже на Magento, который меня заворачивает. Ошибочная логика. Кто-нибудь получил другое мнение о том, что может быть неправильным? О, и прежде, чем я забуду, вот мой макет таблицы:
CREATE TABLE IF NOT EXISTS `sms_entry` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`type` int(11) NOT NULL,
`telephone` varchar(20) DEFAULT NULL,
`country` varchar(2) DEFAULT NULL,
`message` text,
`date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Независимо от того, что я пробовал, он просто не сохранит код страны. Я также попытался сделать varchar более крупным, чем 2, переключая имя на country_code
(если страна была зарезервирована или что-то еще). Кажется, ничего не помогает.