1. Go to this page and download the library: Download jemdev/dbrm library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
jemdev / dbrm example snippets
/**
* Fichier de configuration des paramètres de connexion à la base de données.
* Ce fichier est généré automatiquement lors de la phase initiale d'installation.
*/
$db_app_server = 'localhost'; // Adresse du serveur de base de données
$db_app_schema = 'testjem'; // Schéma à cartographier (base de données de l'application)
$db_app_user = 'testjem'; // Utilisateur de l'application pouvant se connecter au SGBDR
$db_app_mdp = 'testjem'; // Mot-de-passe de l'utilisateur de l'application
$db_app_type = 'pgsql'; // Type de SGBDR, MySQL, PostGreSQL, Oracle, etc..
$db_app_port = '5432'; // Port sur lequel on peut se connecter au serveur
$db_meta_schema = 'INFORMATION_SCHEMA'; // Schéma où pourront être collectées les informations sur le schéma de travail
/**
* Création des constantes globales de l'application
* NE PAS MODIFIER LES LIGNES SUIVANTES
*/
defined("DB_ROOT_SERVER") || define("DB_ROOT_SERVER", $db_app_server);
defined("DB_ROOT_USER") || define("DB_ROOT_USER", $db_app_user);
defined("DB_ROOT_MDP") || define("DB_ROOT_MDP", $db_app_mdp);
defined("DB_ROOT_SCHEMA") || define("DB_ROOT_SCHEMA", $db_meta_schema);
defined("DB_ROOT_TYPEDB") || define("DB_ROOT_TYPEDB", $db_app_type);
defined("DB_ROOT_DBPORT") || define("DB_ROOT_DBPORT", $db_app_port);
defined("DB_APP_SCHEMA") || define("DB_APP_SCHEMA", $db_app_schema);
defined("DB_APP_SERVER") || define("DB_APP_SERVER", $db_app_server);
defined("DB_APP_USER") || define("DB_APP_USER", $db_app_user);
defined("DB_APP_PASSWORD") || define("DB_APP_PASSWORD", $db_app_mdp);
/* Définition de la requête */
$sql = "SELECT utl_id, utl_nom, utl_prenom, utl_dateinscription ".
"FROM t_utilisateur_utl ".
"WHERE utl_dateinscription > :p_utl_dateinscription ".
"ORDER BY utl_nom, utl_prenom";
/* Initialisation de paramètre(s) */
$params = array(':p_utl_dateinscription' => '2015-10-15');
/* Initialisation de la requête */
$oVue->setRequete($sql, $params);
/* Récupération des données */
$infosUtilisateur = $oVue->fetchAssoc();
/* On crée l'instance de la ligne à partir du nom de la table cible */
$oAdresse = $oDbrm->getLigneInstance('t_adresse_adr');
/*
* On détermine si l'on dispose ou non de la clé primaire de la ligne
* et on stocke ça dans un tableau associatif
*/
$aPk = (!empty($adr_id)) ? array('adr_id' => $adr_id) ? null;
/* On initialise l'instance */
$oAdresse->init($aPk);
/*
* Dès cet instant, notre objet présente chaque colonne de la
* table t_interlocuteur_int comme des propriétés qu'on peut modifier
*/
$oAdresse->adr_numero = $adr_numero;
$oAdresse->adr_libelle_1 = $adr_libelle_1;
// ... etc...
/* On peut maintenant sauvegarder ces informations */
$enreg = $oAdresse->sauvegarder();
/*
* Terminé, les écritures pour cette ligne sont terminées.
* On peut récupérer la valeur de la clé primaire si nécessaire et s'il
* s'agissait d'une création. Cette clé primaire est automatiquement gérée
* et initialisée dans l'instance.
* S'il y a eu une erreur, la méthode sauvegarder retournera l'erreur, sinon
* elle retournera TRUE
*/
if(true == $enreg)
{
/*
* Ici, si par exemple vous avez d'autres données à enregistrer, données qui
* dépendent la la réussite de ce premier enregistrement, vous continuez
* sur l'enregistrement suivant, exemple :
*/
$adr_id = $oAdresse->adr_id;
$oInterlocuteur = $oDbrm->getLigneInstance('t_interlocuteur_int');
/*
* On détermine si l'on dispose ou non de la clé primaire de la ligne
* et on stocke ça dans un tableau associatif
*/
$aPk = (!empty($int_id)) ? array('int_id' => $int_id) : null;
/* On initialise l'instance */
$oInterlocuteur->init($aPk);
/*
* Dès cet instant, notre objet présente chaque colonne de la
* table t_interlocuteur_int comme des propriétés qu'on peut modifier
*/
$oInterlocuteur->adr_id = $adr_id; // Ici, on alimente la clé étrangère définie en enregistrant l'adresse.
$oInterlocuteur->int_nom = $int_nom;
$oInterlocuteur->int_prenom = $int_prenom;
if(!is_null($int_dateinscription))
{
$oInterlocuteur->int_dateinscription = $int_dateinscription;
}
/* On peut maintenant sauvegarder ces informations */
$enreg = $oInterlocuteur->sauvegarder();
// etc... suite selon les besoins.
}
else
{
// Ici, le code permettant la gestion de l'erreur selon vos propres manières de faire.
}
/* Définition des valeurs de bases des identifiants */
$int_id = null;
$adr_id = null;
/* On crée l'instance de la ligne à partir du nom de la table cible */
$oAdresse = $oDbrm->getLigneInstance('t_adresse_adr');
/*
* On détermine si l'on dispose ou non de la clé primaire de la ligne
* et on stocke ça dans un tableau associatif
*/
$aPk = (!empty($adr_id)) ? array('adr_id' => $adr_id) ? null;
/* On initialise l'instance */
$oAdresse->init($aPk);
/*
* Dès cet instant, notre objet présente chaque colonne de la
* table t_interlocuteur_int comme des propriétés qu'on peut modifier
*/
$oAdresse->adr_numero = $adr_numero;
$oAdresse->adr_libelle_1 = $adr_libelle_1;
// ... etc...
/* On peut maintenant sauvegarder ces informations */
$enreg = $oAdresse->sauvegarder();
/*
* Terminé, les écritures pour cette ligne sont terminées.
* On peut récupérer la valeur de la clé primaire si nécessaire et s'il
* s'agissait d'une création. Cette clé primaire est automatiquement gérée
* et initialisée dans l'instance.
* S'il y a eu une erreur, la méthode sauvegarder retournera l'erreur, sinon
* elle retournera TRUE
*/
if(true == $enreg)
{
$adr_id = $oAdresse->adr_id;
// etc... suite selon les besoins.
}
else
{
// Ici, le code permettant la gestion de l'erreur selon vos propres manières de faire.
}
$oInterlocuteur = $oDbrm->getLigneInstance('t_interlocuteur_int');
/*
* On détermine si l'on dispose ou non de la clé primaire de la ligne
* et on stocke ça dans un tableau associatif
*/
$aPk = (!empty($int_id)) ? array('int_id' => $int_id) : null;
/* On initialise l'instance */
$oInterlocuteur->init($aPk);
/*
* Dès cet instant, notre objet présente chaque colonne de la
* table t_interlocuteur_int comme des propriétés qu'on peut modifier
*/
$oInterlocuteur->adr_id = $adr_id; // Ici, on alimente la clé étrangère définie en enregistrant l'adresse.
$oInterlocuteur->int_nom = $int_nom;
$oInterlocuteur->int_prenom = $int_prenom;
if(!is_null($int_dateinscription))
{
$oInterlocuteur->int_dateinscription = $int_dateinscription;
}
/* On peut maintenant sauvegarder ces informations */
$enreg = $oInterlocuteur->sauvegarder();
if(true == $enreg)
{
$int_id = $oInterlocuteur->int_id;
// etc... suite selon les besoins.
}
else
{
// Ici, le code permettant la gestion de l'erreur selon vos propres manières de faire.
}
if(!is_null($int_id) && !is_null($adr_id))
{
/* Maintenant, on peut alimenter la tablea relationnelle */
$oAdresseInt = $oDbrm->getLigneInstance('r_int_has_adr_iha');
/* On définit les éléments de la clé primaire composite */
$aPk = array(
'int_id' => $int_id,
'adr_id' => $adr_id
);
/* On initialise l'instance de l'objet */
$oAdresseInt->init($aPk);
/* On peut sauvegarder */
$enreg = $oAdresseInt->sauvegarder();
if(true !== $enreg)
{
// Ici, le code permettant la gestion de l'erreur selon vos propres manières de faire.
}
}
$instanceLigne->nom_colonne = "AES_ENCRYPT('valeur', 'Clé de chiffrement')";
/* On a d'abord besoin d'une instance de jemdev\dbrm\vue */
$oVue = $oDb->getDbrmInstance();
/* On définit la requête SQL d'insertion */
$sql = "INSERT INTO matable (col_login, col_motdepasse)".
"VALUES('Toto', AES_ENCRYPT('valeur', 'Clé de chiffrement'))";
$oVue->setRequete($sql);
/* Exécution de la requête. */
$enreg = $oVue->execute();
/**
* @package jemdev
*
* Ce code est fourni tel quel sans garantie.
* Vous avez la liberté de l'utiliser et d'y apporter les modifications
* que vous souhaitez. Vous devrez néanmoins respecter les termes
* de la licence CeCILL dont le fichier est joint à cette librairie.
* {@see http://www.cecill.info/licences/Licence_CeCILL_V2-fr.html}
*
* Date de génération du fichier : 12/05/2023 11:05:36
*/
/**
* Définition des constantes sur les types de données
*/
defined('TYPE_INTEGER') || define('TYPE_INTEGER', 'INT');
defined('TYPE_VARCHAR') || define('TYPE_VARCHAR', 'VARCHAR');
defined('TYPE_ENUM') || define('TYPE_ENUM', 'ENUM');
defined('TYPE_FLOAT') || define('TYPE_FLOAT', 'FLOAT');
defined('TYPE_TINYINT') || define('TYPE_TINYINT', 'TINYINT');
defined('TYPE_DATE') || define('TYPE_DATE', 'DATE');
defined('TYPE_MEDIUMINT') || define('TYPE_MEDIUMINT', 'MEDIUMINT');
defined('TYPE_BLOB') || define('TYPE_BLOB', 'BLOB');
/**
* Description détaillée des schémas
*/
$dbConf = array(
0 => array(
'schema' => array(
'name' => DB_APP_SCHEMA,
'SGBD' => DB_ROOT_TYPEDB,
'server' => DB_APP_SERVER,
'port' => DB_ROOT_DBPORT,
'user' => DB_APP_USER,
'mdp' => DB_APP_PASSWORD,
'pilote' => DB_ROOT_TYPEDB
),
'tables' => array(),
'relations' => array(),
'vues' => array()
)
);
namespace App\Command;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Style\SymfonyStyle;
use jemdev\dbrm\init\genereconf;
use jemdev\dbrm\vue;
/**
* Commande personnalisée.
*
* Ce fichier va permettre de déclencher la (re)génération du fichier de configuration
* de la base de données telle que requise par la librairie jemdev\dbrm
*
* En lançant simplement en console la commande suivante :
* php bin/console app:dbrmconf
*
* @author JEM-Developpement Ltd
*/
class DbrmconfCommand extends Command
{
protected static $defaultName = 'app:dbrmconf';
protected static $defaultDescription = 'Génération du fichier de configuration de la base de données';
protected static $dirconf;
protected function configure(): void
{
$this->setHelp('Cette commande permet de générer le fichier de configuration de la base de données pour le package jemdev\dbrm');
self::$dirconf = dirname(dirname(__DIR__)) . DIRECTORY_SEPARATOR ."config". DIRECTORY_SEPARATOR ."packages". DIRECTORY_SEPARATOR ."dbrm". DIRECTORY_SEPARATOR;
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
$io = new SymfonyStyle($input, $output);
. . . .
Available commands for the "app" namespace:
app:dbrmconf Génération du fichier de configuration de la base de données
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.