Exemple avec trois tables

Les exemples suivant utilisent tous trois tables de la base de données compagnie : les tables compagnie, departement et employe. Elles introduisent le dernier morceau du fonctionnement non expliqué dans les exemples ci haut : la référence non contenue employe_du_mois.

Comme les exemples ci haut pour la compagnie et le département, la série d'exemples illustre le cycle de vie complet d'un graphique de données.

Exemple #1 Une compagnie, un département, un employé - Création

<?php
require_once 'SDO/DAS/Relational.php';
require_once 'company_metadata.inc.php';

/*************************************************************************************
* Vidage des deux tables
*************************************************************************************/
$dbh = new PDO(PDO_DSN,DATABASE_USER,DATABASE_PASSWORD);
$pdo_stmt = $dbh->prepare('DELETE FROM COMPAGNIE;');
$rows_affected = $pdo_stmt->execute();
$pdo_stmt = $dbh->prepare('DELETE FROM DEPARTEMENT;');
$rows_affected = $pdo_stmt->execute();
$pdo_stmt = $dbh->prepare('DELETE FROM EMPLOYE;');
$rows_affected = $pdo_stmt->execute();

/*************************************************************************************
* Crée une compagnie minuscule mais complète.
* Le nom de la compagnie est Acme.
* Il y a un département, Chaussure.
* Il y a une employé, Bob.
* L'employé du mois est Bob.
*************************************************************************************/
$das = new SDO_DAS_Relational ($database_metadata,'compagnie',$SDO_containment_metadata);
$dbh = new PDO(PDO_DSN,DATABASE_USER,DATABASE_PASSWORD);

$root		= $das  -> createRootDataObject();
$acme		= $root -> createDataObject('compagnie');
$acme -> nom = "Acme";
$chaussure   = $acme -> createDataObject('departement');
$chaussure -> nom		 = 'Chaussure';
$chaussure -> emplacement = 'Bloc-A';
$bob							  = $chaussure -> createDataObject('employe');
$bob -> nom			  = 'Bob';
$acme -> employe_du_mois = $bob;

$das -> applyChanges($dbh, $root);

echo "Écriture de Acme avec un département et un employé\n";
?>

Exemple #2 Une compagnie, un département, un employé - Récupération et Mise à Jour

<?php
require_once 'SDO/DAS/Relational.php';
require_once 'company_metadata.inc.php';

/*************************************************************************************
 * Trouve la compagnie encore et change certains aspects.
 * Change le nom de la compagnie, le département et l'employé.
 * Ajoute un second département et un nouvel employé.
 * Change l'employé du mois
 *************************************************************************************/
$das = new SDO_DAS_Relational ($database_metadata,'compagnie',$SDO_containment_metadata);
$dbh = new PDO(PDO_DSN,DATABASE_USER,DATABASE_PASSWORD);

$root = $das->executeQuery($dbh,
	"select c.id, c.nom, c.employe_du_mois, d.id, d.nom, e.id, e.nom " .
	"from compagnie c, departement d, employe e " .
	"where e.dept_id = d.id and d.co_id = c.id and c.nom='Acme'",
	 array('compagnie.id','compagnie.nom','compagnie.employe_du_mois',
	 'departement.id','departement.nom','employe.id','employe.nom'));
$acme   = $root['compagnie'][0];

$chaussure	  = $acme->departement[0];
$bob		  = $chaussure -> employe[0];

$it	 = $acme->createDataObject('departement');
$it->nom = 'IT';
$it->location = 'Bloc-G';
$billy  = $it->createDataObject('employe');
$billy->nom = 'Billy';

$acme->nom = 'MegaCorp';
$chaussure->nom = 'Footwear';
$sue->nom = 'Suzan';

$acme->employe_du_mois = $billy;
$das -> applyChanges($dbh, $root);
echo "Écriture de la compagnie avec un département en plus et un employé et
tous les noms ont changés Megacorp/Footwear/Suzan)\n";

?>

Exemple #3 Une compagnie, deux départements, deux employés - Récupération et Suppression

<?php
require_once 'SDO/DAS/Relational.php';
require_once 'company_metadata.inc.php';

/*************************************************************************************
 * Maintenant lit une ou plusieurs fois et supprime.
 * Vous pouvez supprimer par partie, appliquer les changements, et ensuite
 * continuer à travailler avec le même graphique de données mais la précaution
 * est requise pour garder véracité - vous ne pouvez pas supprimer l'employé
 * qui est l'employé du mois sans le réassigner. Pour plus de précaution ici,
 * nous supprimons la compagnie en entier d'un seul coup.
 *************************************************************************************/
$das = new SDO_DAS_Relational ($database_metadata,'compagnie',$SDO_containment_metadata);
$dbh = new PDO(PDO_DSN,DATABASE_USER,DATABASE_PASSWORD);

$root = $das->executeQuery($dbh,
	"select c.id, c.nom, c.employe_du_mois, d.id, d.nom, e.id, e.nom " .
	"from compagnie c, departement d, employe e " .
	"where e.dept_id = d.id and d.co_id = c.id and c.nom='MegaCorp';",
	 array('compagnie.id','compagnie.nom','compagnie.employe_du_mois',
	 'departement.id','departement.nom','employe.id','employe.nom'));
$megacorp = $root['compagnie'][0];

unset($root['compagnie']);
$das -> applyChanges($dbh, $root);

echo "Suppression de la compagnie, des départements et des employés d'un seul coup.\n";

?>

LoadingChargement en cours