Un modèle magento sans une clé primaire en auto_increment

Jul
06 2012
Un modèle magento sans une clé primaire en auto_increment

Par défaut, Magento attend que votre clef primaire soit auto-incrémentée. Du coup, pas besoin de renseigner la clef primaire lors de l'utilisation de la méthode save(). Cela pose problème lorsque vous avez une table qui ne fonctionne pas comme cela. En effet, Magento effectuera un UPDATE si vous spécifiez la valeur de la clef primaire.

Il est possible de corriger ce comportement en définissant la valeur de la propriété _isPkAutoIncrement à false. Ainsi Magento vérifiera d'abord l'existence d'une ligne avec une clef primaire égale à cette valeur. Si la ligne existe, il réalisera un UPDATE sinon un INSERT.

Ci-dessous, l'exemple d'un model Tracking utilisant une table tracking et une clef primaire tracking_id :

<?php
class Ds_Customer_Model_Mysql4_Tracking extends Mage_Core_Model_Mysql4_Abstract
{
     public function _construct()
     {
         $this->_init('customer/tracking', 'tracking_id');
         $this->_isPkAutoIncrement = false;
     }
}

0 commentaire

Laissez un commentaire