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"; ?>