
Dans cet article je vais vous présenter les méthodes de base pour mettre à jour votre base de données MySQL via les scripts d’installation Magento. Cette documentation, bien que sommaire vous permettra déjà je l’espère d’avancer dans vos projets.
Cet article se base simplement sur une vulgarisation de deux fichiers sources de librairie Varien ayant trait à la classe Varien_Db_Ddl_Table.
« lib/Varien/Db/Ddl/Table.php »
« lib/Varien/Db/Adapter/Pdo/Mysql.php »
IMPORTANT: On sous estime bien souvent l’intérêt de spécifier le nom de la table en mysql, ou d’utiliser les classe varien pour la gestion de la base de données, mais le gros avantage par rapport à du SQL pure est l’évolutivité au fur et à mesure des versions, ainsi si varien (editeur de magento) ou vous changez un nom de table en xml, vos scripts s’exécuteront toujours comme il faut. Il est en effet souvent préférable de privilégier l’évolutivité à la livraison rapide de code statique.
Documentation
Format des scripts de setup (rappel)
Les noms de fichiers peuvent prendre depuis la version 1.6 deux formats,
- à l’installation : install-0.0.1.php (avec numéro de première version 0.0.1)
- à l’update : upgrade-0.0.1-0.0.4.php (pour un passage de version 0.0.1 à 0.0.4)
Ils commencent généralement par :
et se terminent par:
Les types de champs mysql
Quand vous déclarez une colonne vous allez déclarer son type sont une forme proche de : Varien_Db_Ddl_Table::TYPE_TEXT, voici une liste des types utilisés par magento:
Certains types ne sont plus supportés (deprecated) et donc retransformés en interne par Magento, les voici :
Converti en: TYPE_SMALLINT
Converti en: TYPE_TEXT
Converti en: TYPE_FLOAT
Converti en: TYPE_TIMESTAMP
Converti en: TYPE_BLOB
A noter que par défaut, la taille d’une champ TEXT est de 1024 dans magento.
Fonction newTable
La création d’une table mysql en flat Magento se passe dans un fichier de setup et s’écrit ainsi par exemple:
La partie newTable() du script permet d’utiliser les arguments suivants:
Fonction dropTable
La partie dropTable() du script permet d’utiliser les arguments suivants:
Ici rien de transcendant, rappelez vous juste que la suppression d’une table est irréversible, et qu’il faut prendre en compte les éventuelles clé étrangères et dépendances de modules.
Il n’y a d’ailleurs pas d’exemple dans le code source de magento, du fait du peu d’utilité d’une telle fonction.
Fonction addColumn
La syntaxe de la fonction de base addColumn est celle-ci:
Le nom, est spécifiable librement, pour le type je vous laisse vous référer au premier paragraphe de ce tutoriel, pour la taille un simple nombre suffira, et pour les options voici celles admises:
Comme vous pouvez le constater l’option de position de la colonne n’est pas traité par le code Magento. Votre colonne sera donc placée en dernière position lors de son ajout.
Fonction dropColumn
La fonction admet les arguments suivants:
En analysant le code on se rend compte, que les clefs étrangères seront automatiquement supprimées et qu’une vérification de l’existence de la colonne est implémentée, on évite donc à priori les messages d’erreurs bloquants.
Exemple de code :