Table des matières

DAO V 1.0.0.3

Attention, les accesseurs (getters and setters) doivent être implémentés pour le bon fonctionnement des associations.

ManyToOne

Exemple : Chaque utilisateur a un groupe.

Ajout des annotations dans la classe Utilisateur :

class Utilisateur extends BaseObject{

	private $login;
	private $password=null;
	private $mail;
	/**
	 * @ManyToOne
	 * @JoinColumn(name="idGroupe",className="Groupe",nullable=true)
	 */
	private $groupe;

JoinColumn

Chargement

Les membres manyToOne sont chargées automatiquement avec les objets qui les contiennent. Si un utilisateur est chargé, le groupe de l'utilisateur l'est également.

$aUser=DAO::getOne("Utilisateur",1);
echo $aUser->getGroupe();

OneToMany

Exemple : Dans chaque groupe, on a plusieurs utilisateurs.

Ajout des annotations dans la classe Groupe :

class Groupe extends BaseObject{

	private $libelle;
	/**
	 * @OneToMany(mappedBy="groupe",className="Utilisateur")
	 */
	private $utilisateurs;

Chargement

Les membres oneToMany ne sont chargés automatiquement avec les objets qui les contiennent. Il est nécessaire de le faire explicitement dans le code pour qu'ils le soient :

$aGroupe=DAO::getOne("Groupe",1);
DAO::getOneToMany($aGroupe,"utilisateurs");
var_dump($aGroupe->getUtilisateurs());

Déclaration des ManyToMany

Exemple : Les groupes disposent de droits sur les modules.
Un groupe aura donc une collection de modules représentant ses droits.

class Groupe extends BaseObject{
	...
	
	/**
	 * @ManyToMany(targetEntity="Module", inversedBy="groupes")
	 * @JoinTable(name="droit")
	 */
	private $modules;
}

JoinTable

Chargement

Les membres ManyToMany ne sont pas chargés automatiquement avec les objets qui les contiennent. Il est nécessaire de le faire explicitement dans le code pour qu'ils le soient :

$aGroupe=DAO::getOne("Groupe",1);
DAO::getManyToMany($aGroupe,"modules");
var_dump($aGroupe->getModules());