Skip to content
Snippets Groups Projects
Select Git revision
  • 262ee39fcdf93e2a91edb8ff2edad18cb325e479
  • main default
  • detached3
  • detached2
  • modernisation-gestion-donnees
  • detached
  • 1.5.0
  • 1.4.3
  • 1.4.2
  • 1.4.1
  • 1.4.0
  • 1.3.0
  • 1.2.0
  • 1.1.2
  • 1.1.1
  • 1.1.0
  • 1.0.6
  • 1.0.5
  • 1.0.4
  • 1.0.3
  • 1.0.2
  • 1.0.1
  • 1.0.0
  • 0.9.10
  • 0.9.9
  • 0.9.8
26 results

doc.md

  • Anthony Gautreau's avatar
    Anthony Gautreau authored
    1008c40e
    History
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.

    Documentation

    Installation

    BddAdmin est une bibliothèque Unicaen installable via composer en ajoutant la ligne suivante à votre composer.json :

    "unicaen/bddadmin"                            : "0.9.2",

    La version sera bien entendu à actualiser.

    La documentation complète sera (plus tard) accessible ici :

    Exemples d'utilisation

    Comment instancier BddAdmin

    Voici un script rapide vous permettant d'instancier un nouvel objet Bdd

    use Unicaen\BddAdmin\Bdd;
    
    /* Paramètres d'accès à votre BDD */
    $config = [
            'driver'   => 'Postgresql', // Postgresql ou Oracle
            'host'     => '*********',  // IP ou nom DNS
            'port'     => 5432,         // port, à adapter
            'dbname'   => '*********',  // Nom de votre base de données
            'username' => '*********',  // Utilisateur
            'password' => '*********',  // Mot de passe
    ];
    
    $bdd = new Bdd($config);
    
    $bdd->setOptions([
        /* Facultatif, permet de spécifier une fois pour toutes le répertoire où sera renseignée la DDL de votre BDD */
        Bdd::OPTION_DDL_DIR => getcwd() . '/data/ddl',
    
        /* Facultatif, spécifie le répertoire où seront stockés vos scripts de migration si vous en avez */
        Bdd::OPTION_MIGRATION_DIR => getcwd() . '/admin/migration/',
    
        /* Facultatif, permet de personnaliser l'ordonnancement des colonnes dans les tables */
        Bdd::OPTION_COLUMNS_POSITIONS_FILE => getcwd() . '/data/ddl_columns_pos.php',
    ]);
    
    // première requête pour tester, à personnaliser selon votre modèle de données
    $data = $bdd->select('select * from annee');
    
    var_dump($data);

    Faire un diff depuis la DDL vers la BDD

    
    // Récupération du schéma de référence, issu du répertoire spécifié via l'option Bdd::OPTION_DDL_DIR
    // note : le répertoire peut aussi être passé directement en argument de getRefDdl
    $ddl = $bdd->getRefDdl();
    
    // On fait un DIFF et on le convertit en SQL
    $sql = $bdd->diff($ddl)->toScript();
    
    // Et si on veut faire un diff avec une autre BDD, pour comparer la bdd de prod avec cette de dév:
    // /** @var $bddProd \Unicaen\BddAdmin\Bdd */
    // /** @var $bddDev \Unicaen\BddAdmin\Bdd */
    // $sql = $bddProd->diff($bddDev)->toScript();
    
    echo $sql;

    Mise à jour d'une DDL à partir de la base de données

    /* Filtres éventuels pour éviter de faire figurer dans la DDL des objets d'utilité locale */
    $filters = [];
    
    // On calcule la DDL depuis la BDD
    $ddl = $bdd->getDdl($filters);
    
    // Enregistrement du schéma de référence, vers le répertoire spécifié via l'option Bdd::OPTION_DDL_DIR
    // note : le répertoire peut aussi être passé directement en argument de saveToDir
    $ddl->saveToDir();

    Mise à jour de la base de données à partir d'une DDL

    // Récupération du schéma de référence, issu du répertoire spécifié via l'option Bdd::OPTION_DDL_DIR
    // note : le répertoire peut aussi être passé directement en argument de getRefDdl
    $ref = $bdd->getRefDdl();
    
    // Filtre pour l'appliquer les modifications que pour la DDL et ne supprime pas les objets autres
    // C'est facultatif, à activer selon contexte
    $filters = $ref->makeFilters();
    
    // On met à jour la BDD
    $bdd->alter($ref, $filters);