Mage::getModel() は、指定されたモデルの新しいオブジェクトを常に返します。
/**
* Retrieve model object
*
* @link Mage_Core_Model_Config::getModelInstance
* @param string $modelClass
* @param array|object $arguments
* @return Mage_Core_Model_Abstract|false
*/
public static function getModel($modelClass = '', $arguments = array())
{
return self::getConfig()->getModelInstance($modelClass, $arguments);
}
Mage::getSingleton() は、指定されたモデルのオブジェクトが既に存在するかどうかを確認し、存在する場合はそれを返します。存在しない場合は、指定されたモデルの新しいオブジェクトを作成し、既に存在するレジストリに入れます。次の呼び出しは、新しいオブジェクトではなく、既存のオブジェクトを返します。
/**
* Retrieve model object singleton
*
* @param string $modelClass
* @param array $arguments
* @return Mage_Core_Model_Abstract
*/
public static function getSingleton($modelClass='', array $arguments=array())
{
$registryKey = '_singleton/'.$modelClass;
if (!self::registry($registryKey)) {
self::register($registryKey, self::getModel($modelClass, $arguments));
}
return self::registry($registryKey);
}
あなたの場合、すべての製品が一意であるため、常に完全に新しい製品オブジェクト/モデルが必要です...