2012-05-30 48 views
1

我正在为Magento 1.7.0定制模块。我在尝试将数据插入到MySQL时遇到问题。我从会话获取用户信息如下:无法保存数据在MySQL中从自定义Magento模块

$customer = Mage::getSingleton('customer/session')->getCustomer(); 
$user_id = $customer->getId(); 

$user_id现在进行登录到我的Magento系统当前用户的ID

基本上问题是,当我尝试在自定义表格中保存上面的ID时,保存在我的表格中的值始终为。

以前我在尝试保存另一个整数值时遇到了这个问题,我通过将MySQL表列的数据类型从int(10)更改为tinyint(4)来解决此问题,但在这种情况下,我无法为用户名。

$model= Mage::getModel('voter/competetion') 
    ->setDesignid($designId) 
    ->setUserId($user_id) 
    ->setVote($vote) 
    ->setStartdate($startDate) 
    ->save(); 

MySQL的列名是与安装sql脚本沿着如下:ID,designid,USER_ID,投票,开始日期,结束日期

$installer = $this; 
$installer->startSetup(); 

$prefix = Mage::getConfig()->getTablePrefix(); 

$installer->run(" 
    CREATE TABLE IF NOT EXISTS ".$prefix."vote_competetion (
     id int(10) NOT NULL AUTO_INCREMENT, 
     designid int(10) NOT NULL, 
     user_id int(10) NOT NULL, 
     vote tinyint(1) NOT NULL, 
     startdate datetime NOT NULL, 
     enddate datetime NOT NULL, 
     PRIMARY KEY (id), 
     FOREIGN KEY (designid) REFERENCES ".$prefix."vote_design(id) 
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1; 
"); 

Mage::getModel('core/url_rewrite')->setId(null); 
$installer->endSetup(); 

是不是有什么毛病我setter方法名。所有其他值都正确保存。我真的不知道该怎么做。请帮忙。

我很感谢所有的帮助。

谢谢!

回答

3

如果您从表中没有user_id,那么您应该清除缓存,因为Magento会保留缓存的结构并且不会设置任何新的列数据。

+0

谢谢,这是完美的答案!我会很感激! –

0

您在命名用户标识字段时出错。在表中它被命名为用户ID,所以在你的代码,你应该这样称呼它:

$model= Mage::getModel('voter/competetion') 
    ->setDesignid($designId) 
    ->setUserid($user_id) // notice lowercase "i" here 
    ->setVote($vote) 
    ->setStartdate($startDate) 
    ->save(); 

或者你可以在表中从用户IDuser_id说明重命名字段。

+0

这是我的错,我在粘贴问题中的SQL时犯了一个错误。 phpMyAdmin中的列名实际上是'user_id'。我编辑了这个问题。 –

+0

它仍然无法正常工作,问题依然存在。感谢你的回答。 –

相关问题