1

Magento1.7.0用のカスタムモジュールを作成しています。MySQLにデータを挿入しようとしているときに問題が発生しました。次のように、セッションからユーザー情報を取得します。

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

$user_idこれIDで、Magentoシステムにログインしている現在のユーザーを引き継ぐことができます。

基本的に問題は、上記のIDをカスタムテーブルに保存しようとすると、テーブルに保存される値が常に0になることです。

以前、MySQLテーブル列のデータ型をint(10)からtinyint(4)に変更することで解決した別の整数値を保存しようとしたときにこの問題に直面しましたが、この場合、ユーザーIDに対してはそうすることができません。

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

MySQLの列名は、インストールSQLスクリプトとともに次のとおりです:id、designid、user_id、vote、startdate、enddate

$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();

セッターメソッド名に問題がありますか?他のすべての値は正しく保存されています。私はこれについてどうしたらいいのか本当にわかりません。助けてください。

私はすべての助けに感謝します。

ありがとう!

4

2 に答える 2

3

最初からテーブルにuser_idがなかった場合、Magentoはその構造をキャッシュしたままにし、新しい列データを設定しないため、キャッシュをクリアする必要があります。

于 2012-05-30T13:28:02.843 に答える
0

ユーザーIDフィールドの命名にエラーがあります。テーブルではuseridという名前が付けられているため、コードでは次のように呼び出す必要があります。

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

または、テーブルのフィールドの名前をuseridからuser_idに変更できます。

于 2012-05-30T12:25:14.313 に答える