web-dev-qa-db-fra.com

Extension des scripts d'installation sans raw sql

Je suis nouveau dans le développement de Joomla, venant de Magento. En parcourant les tutoriels avec une certaine extension, je suis tombé sur un petit problème.

A présent, Joomla prend en charge MySql et MSSQL.

De Magento, je suis habitué à créer des extensions avec des scripts d'installation indépendants de la base de données, car je n'ai aucune influence sur la base de données que l'utilisateur final exécutera.

Dans les tutoriels Joomla, on ne me dit d'utiliser que SQL brut pour créer des tables et des choses, mais il existe une différence dans la syntaxe entre MySQL et MSSQL et peut-être encore plus de différences avec d'autres implémentations de SQL qui pourraient bientôt être supportées joomly.

Dans mes fichiers php, je peux simplement utiliser les adaptateurs de base de données fournis par Joomla afin de garder les choses abstraites. Existe-t-il un moyen d'utiliser des fichiers .php en tant que scripts d'installation au lieu de fichiers .sql? Ou existe-t-il un autre moyen de créer des scripts d'installation compatibles avec toutes les bases de données? Ou joomla interprète-t-il réellement la syntaxe MySQL des fichiers .sql elle-même?

Merci pour toute aide.

1
user3154108

Vous pouvez définir plusieurs scripts d'installation de base de données pour chaque pilote de base de données tel que MySQL ou MSSQL que vous souhaitez prendre en charge dans votre fichier XML d'installation. Jetez un coup d’œil à l’exemple XML présenté dans les documents officiels de Joomla: https://docs.joomla.org/J3.x:Developing_a_MVC_Component/Using_the_database#helloworld.xml

Votre fichier XML pourrait ressembler à ceci alors:

<install> <!-- Runs on install -->
    <sql>
        <file driver="mysql" charset="utf8">sql/install.mysql.utf8.sql</file>
        <file driver="mssql" charset="utf8">sql/install.mssql.utf8.sql</file>
    </sql>
</install>
<uninstall> <!-- Runs on uninstall -->
    <sql>
        <file driver="mysql" charset="utf8">sql/uninstall.mysql.utf8.sql</file>
        <file driver="mssql" charset="utf8">sql/uninstall.mssql.utf8.sql</file>
    </sql>
</uninstall>
3
fruppel

Ce que vous pouvez faire est d’avoir un fichier séparé pour chaque type de lecteur de base de données, par exemple:

<install>
    <sql>
        <file driver="mysql" charset="utf8">path/to/sql/file</file>
        <file driver="mssql" charset="utf8">path/to/mssql/file</file>
    </sql>
</install>

Définissez simplement le type de pilote comme suit:

driver="mysql"

J'espère que cela t'aides

2
Lodder