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 :