it-swarm.dev

Dossier de structure des fichiers SQL dans mon composant

Quel dossier dois-je mettre mes fichiers SQL dans mon composant pour que joomla les exécute automatiquement? Si, dans la première version, j'ai créé une table et que, dans la version ultérieure, je souhaite le modifier, comment dois-je organiser ces fichiers de sorte que joomla sache quels fichiers il doit exécuter? Comment joomla gère-t-il ces fichiers?

6
csbenjamin

Comme Milton l'a déjà écrit, vous spécifiez l'emplacement de ces fichiers SQL dans le fichier manifeste d'installation. Il existe trois emplacements différents pour l’installation, la désinstallation et la mise à jour.

<install>
    <sql>
        <file driver="mysql" charset="utf8">sql/install.mysql.utf8.sql</file>
    </sql>
</install>
<uninstall>
    <sql>
        <file driver="mysql" charset="utf8">sql/uninstall.mysql.utf8.sql</file>
    </sql>
</uninstall>
<update>
    <schemas>
        <schemapath type="mysql">sql/updates/mysql</schemapath>
    </schemas>
</update>

Comme vous le voyez, le fichier update est un peu spécial car il ne spécifie pas un seul fichier mais un dossier. Dans ce dossier, il devrait y avoir des fichiers suivant les versions de vos composants. Lors d’une mise à jour, Joomla vérifiera ce dossier et appliquera les commandes des fichiers dans le bon ordre. Il stocke le dernier fichier appliqué dans la base de données pour qu'il sache, lors de la prochaine mise à jour, lequel est le dernier appliqué. Donc, le dossier devrait contenir des fichiers nommés comme ceci:

  • 1.0.0.sql
  • 1.0.1.sql
  • 1.1.0.sql
  • ...
9
Bakual

La convention est généralement le répertoire admin, mais au-delà, cela ne devrait pas être grave si vous référencez correctement l'emplacement des fichiers dans votre fichier xml principal.

comme:

<install>
    <sql>
        <file driver="mysql" charset="utf8">sql/tables/install.sql</file>
    </sql>
</install>

ou:

<install>
    <sql>
        <file driver="mysql" charset="utf8">sql/install.sql</file>
    </sql>
</install>
4
Milton Bryant