2014-09-18 6 views
1

У меня есть наблюдатель на мероприятии. Код Oberver в:Magento не сохраняет все данные в таблице

public function saveQuoteAfter($evt) { 
     $quote = $evt->getQuote(); 
     $quoteIddd = $quote->getId(); 
     $email = $quote->getPEmail(); 
     $phone = $quote->getPPhone(); 
     $p = $quote->getPP(); 
     $fields = array('quote_id' => $quoteIddd, 'email' => $email, 'phone' => $phone, 'p' => $p); 
     $model = Mage::getModel('my_module/quote')->setData($fields); 
     $model->save(); 
    } 

Mage :: getModel ('my_module/цитата') - это модель, которая сохраняет данные в таблице. Все переменные существуют и могут быть сохранены в первых трех столбцах таблицы. Невозможно сохранить данные в любой другой колонке.

install script: 
$installer = $this; 
$installer->startSetup(); 
$installer->run(" 
CREATE TABLE IF NOT EXISTS {$this->getTable('module_quote')} (
    `id` int(11) unsigned NOT NULL auto_increment, 
    `quote_id` int(11) unsigned NOT NULL, 
    `email` text NOT NULL, 
    `phone` text NOT NULL, 
    `p` text NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 
$installer->endSetup(); 

Поэтому я не могу сохранить данные в столбце «p». Любые идеи, почему magento не сохраняет данные в этих столбцах?

ответ

-1

ciemin вместо of setData() use addData().

Поскольку УстановитьДанные сохранить только одно значение столбца actully эта функция выглядеть

public function addData(array $arr) 
    { 
     foreach($arr as $index=>$value) { 
      $this->setData($index, $value); 
     } 
     return $this; 
    } 

Как с помощью AddData функции вы можете значение массива с индексом, но УстановитьДанные сохранить только одно значение с индексом ех: УстановитьДанные («имя_поля» , $ val)

+0

Это сработало, спасибо. – ciemin

+0

Фактически setData, хотя и может устанавливать свойства одного объекта, предназначен в основном для массивов данных (вы можете проверить, как выглядит метод в классе Varien_Object). –

+0

примите мой ответ –

Смежные вопросы