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