メールアドレスのリストをカスタムテーブルに保存する必要があるカスタム Magento モジュールを開発しています。関連するコードは次のようになります。
foreach($this->getNewSubscriptionsForAPI() as $email){
$requestModel->setEmail($email);
$requestModel->setAction('subscribe');
$requestModel->setPosted(date('Y-m-d H:i:s'));
$requestModel->save();
}
getNewSubscriptionsForAPI()
メソッドは有効なデータを返し、これは$requestModel
有効な Magento モデルです。
ただし、このループが実行されると、データベース アダプタは単純に各レコードを前のレコードの上に上書きします。つまり、phpMyAdmin で「参照」を繰り返し押すと、異なるメール アドレスがデータベースに書き込まれていることがわかりますが、常に同じ行にあり、前のエントリが上書きされます。id フィールドは正しく設定されています。主キーとして、AUTO_INCREMENT に設定され、リソース モデルで id フィールドとしてフラグが立てられています。
興味深いのは、上記のループを使用して、コアnewsletter/subscriber
テーブルに連続するレコードを問題なく書き込むことができることです。
もちろん、単純unset()
にモデルをループの各サイクルで元に戻すこともできMage::getModel()
ますが、これは (a) 非常に無駄に思え、(b) テスト用の依存性注入の設定を台無しにします (ここでは望ましくありません)。コードは独自のモデルをインスタンス化しますが、私が渡したものを使用します)。
誰かが私を正しい方向に向けることができますか?