17.5.1 Manipulation des classes DbObj
Ce chapitre a pour but de montrer par l'utilisation les méthodes et fonctions les plus courantes de manipulations des objets provenant des classes DbObj (Database Object) telles que DocHisto, DocLog, Account.
La classe DbObj est la base du système de persistance de données de Dynacase. Cette classe fourni des méthodes pour faire les opérations basiques de manipulations de données (CRUD).
17.5.1.1 CREATE : Création d'un objet
La méthode DbObj::add()
permet de créer une nouvelle entrée dans la table.
Exemple d'ajout d'une entrée dans la table dochisto
.
La table dochisto
a comme id_fields
l'attribut id
uniquement.
$h = new DocHisto($this->dbaccess); $h->id = 1009 $h->initid = 1009 $h->comment = "Hello world"; $h->date = date("d-m-Y H:i:s"); $h->uname = sprintf("%s %s", $action->user->firstname, $action->user->lastname); $h->uid = $action->user->id; $h->level = DocHisto::INFO; $h->code = 'TESTING'; $err = $h->add();
La méthode DbObj::add()
retourne un message d'erreur en cas d'échec. Cette
méthode appelle les hameçons (hook) DbObj::preInsert()
et
DbObj::postInsert()
. La méthode DbObj::preInsert()
abandonne la création si
elle retourne un message d'erreur.
17.5.1.2 READ : Récupération d'un objet
Les objets sont identifiés par les champs référencés par l'attribut id_fields
.
Le constructeur attend des valeurs référencées par cet attribut. Si cet attribut
est un tableau de plusieurs champs alors il faut indiquer l'ensemble des champs
référencés. Les références ne sont pas toujours des clefs uniques pour les
objets de la classe.
//premier histo du document n°1004 $histo=new DocHisto("",1004); // premier log du document n°1004 $log=new DocLog("",10); // permissions du document 1004 pour l'utilisateur 14 (identifiant système) $perm=new DocPerm("",array(1004,14)); // caractéristiques de l'utilisateur n°1 (admin). $user=new Account("",1);
Pour savoir si l'objet a été récupéré depuis la base de données (si la référence existe), il faut utiliser la méthode ::isAffected().
$user=new Account("",1); if ($user->isAffected()) { print_r($user->getValues()); // on affiche toutes les valeurs de l'objet print $user->login; // on affiche un des attributs de l'objet }
L'accès à un des attributs de l'objet se fait directement en utilisant le nom de l'attribut.
17.5.1.3 UPDATE : Mise à jour d'un d'un objet
La mise à jour d'un objet se fait à l'aide de la méthode DbObj::modify()
.
Avant d'effectuer cette méthode, il faut vérifier que l'objet récupéré existe
réellement à l'aide de la méthode DbObj::isAffected()
$user=new Account("",1); if ($user->isAffected()) { $user->firstName = "McClane"; $user->modify(); }
La méthode DbObj::modify()
retourne un message d'erreur en cas d'échec. Cette
méthode appelle les hameçons (hook) DbObj::preUpdate()
et
DbObj::postUpdate()
. La méthode DbObj::preUpdate()
abandonne la mise à jour
si elle retourne un message d'erreur.
17.5.1.4 DELETE : Suppression d'un objet
La méthode DbObj::delete()
permet de supprimer toutes les entrées
correspondant aux champs id_fields
. Si les champs id_fields
correspondent à
une clef unique, une seule entrée sera supprimée.
Exemple d'ajout d'une entrée dans la table dochisto
.
$h = new DocHisto($this->dbaccess, 1009); if ($h->isAffected()) { // suppression de toutes les entrées dont "dochisto.id=1009" $err = $h->delete(); }
La méthode DbObj::delete()
retourne un message d'erreur en cas d'échec. Cette
méthode appelle les hameçons (hook) DbObj::preDelete()
et
DbObj::postDelete()
. La méthode DbObj::preDelete()
abonne la suppression si
elle retourne un message d'erreur.