Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
| slam4:php:codeigniter:doctrine [2013/01/11 02:07] – [Génération des classes métier] jcheron | slam4:php:codeigniter:doctrine [2019/08/31 14:21] (Version actuelle) – modification externe 127.0.0.1 | ||
|---|---|---|---|
| Ligne 109: | Ligne 109: | ||
| Logiquement, | Logiquement, | ||
| - | Vérifier que la page d' | + | Vérifier que votre page d' | 
| ===== Création des classes métier ===== | ===== Création des classes métier ===== | ||
| Ligne 261: | Ligne 261: | ||
| </ | </ | ||
| - | Tester en allant à l' | + | Tester en allant à l' | 
| {{: | {{: | ||
| Ligne 554: | Ligne 554: | ||
| Exporting " | Exporting " | ||
| models\Mappings" | models\Mappings" | ||
| + | </ | ||
| + | |||
| + | Les fichier yml associés à chaque table de la BDD doivent être présents dans le dossier application/ | ||
| + | <sxh bash; | ||
| + | Utilisateurs: | ||
| + | type: entity | ||
| + | table: utilisateurs | ||
| + | fields: | ||
| + | id: | ||
| + | id: true | ||
| + | type: integer | ||
| + | unsigned: false | ||
| + | nullable: false | ||
| + | generator: | ||
| + | strategy: IDENTITY | ||
| + | prenom: | ||
| + | type: string | ||
| + | length: 50 | ||
| + | fixed: false | ||
| + | nullable: true | ||
| + |     dateinscription: | ||
| + | type: date | ||
| + | nullable: true | ||
| + | column: dateInscription | ||
| + | age: | ||
| + | type: integer | ||
| + | unsigned: false | ||
| + | nullable: true | ||
| + | nom: | ||
| + | type: string | ||
| + | length: 50 | ||
| + | fixed: false | ||
| + | nullable: true | ||
| + | adulte: | ||
| + | type: boolean | ||
| + | nullable: false | ||
| + | manyToMany: | ||
| + | iddroit: | ||
| + |       targetEntity: | ||
| + | cascade: { } | ||
| + | mappedBy: null | ||
| + | inversedBy: idutilisateur | ||
| + | joinTable: | ||
| + | name: utilisateur_droit | ||
| + |         joinColumns: | ||
| + | - | ||
| + | name: idUtilisateur | ||
| + |             referencedColumnName: | ||
| + |         inverseJoinColumns: | ||
| + | - | ||
| + | name: idDroit | ||
| + |             referencedColumnName: | ||
| + | orderBy: null | ||
| + | oneToOne: | ||
| + | categorie: | ||
| + |       targetEntity: | ||
| + | cascade: { } | ||
| + | mappedBy: null | ||
| + | inversedBy: null | ||
| + |       joinColumns: | ||
| + |         categorie_id: | ||
| + |           referencedColumnName: | ||
| + |       orphanRemoval: | ||
| + |   lifecycleCallbacks: | ||
| + | |||
| + | </ | ||
| + | |||
| + | < | ||
| + | Il est également possible de générer les metadonnées de mapping au format xml : | ||
| + | </ | ||
| + | <sxh bash; | ||
| + | php doctrine-cli.php orm: | ||
| + | </ | ||
| + | < | ||
| + | </ | ||
| + | ==== Génération des classes ==== | ||
| + | Nous allons maintenant générer les classes à partir des données de mapping : | ||
| + | Avant la génération, | ||
| + |   * en mode console, exécuter l' | ||
| + | |||
| + | <sxh bash; | ||
| + | php doctrine-cli.php orm: | ||
| + | </ | ||
| + | L' | ||
| + | <sxh bash; | ||
| + | Processing entity " | ||
| + | Processing entity " | ||
| + | Processing entity " | ||
| + | Processing entity " | ||
| + | |||
| + | Entity classes generated to " | ||
| + | </ | ||
| + | |||
| + | Les classes sont générées dans application/ | ||
| + | |||
| + | <sxh php; | ||
| + | <?php | ||
| + | |||
| + | |||
| + | |||
| + | use Doctrine\ORM\Mapping as ORM; | ||
| + | |||
| + | /** | ||
| + | * Utilisateurs | ||
| + | */ | ||
| + | class Utilisateurs | ||
| + | { | ||
| + | /** | ||
| + | * @var integer $id | ||
| + | */ | ||
| + | private $id; | ||
| + | |||
| + | /** | ||
| + | * @var string $prenom | ||
| + | */ | ||
| + | private $prenom; | ||
| + | |||
| + | /** | ||
| + | * @var date $dateinscription | ||
| + | */ | ||
| + |     private $dateinscription; | ||
| + | |||
| + | /** | ||
| + | * @var integer $age | ||
| + | */ | ||
| + | private $age; | ||
| + | |||
| + | /** | ||
| + | * @var string $nom | ||
| + | */ | ||
| + | private $nom; | ||
| + | |||
| + | /** | ||
| + | * @var boolean $adulte | ||
| + | */ | ||
| + | private $adulte; | ||
| + | |||
| + | /** | ||
| + | * @var Categories | ||
| + | */ | ||
| + | private $categorie; | ||
| + | |||
| + | /** | ||
| + | * @var \Doctrine\Common\Collections\ArrayCollection | ||
| + | */ | ||
| + | private $iddroit; | ||
| + | |||
| + | public function __construct() | ||
| + | { | ||
| + |         $this-> | ||
| + | } | ||
| + |      | ||
| + | /** | ||
| + | * Get id | ||
| + | * | ||
| + |      * @return integer  | ||
| + | */ | ||
| + | public function getId() | ||
| + | { | ||
| + |         return $this-> | ||
| + | } | ||
| + | |||
| + | /** | ||
| + | * Set prenom | ||
| + | * | ||
| + | * @param string $prenom | ||
| + | * @return Utilisateurs | ||
| + | */ | ||
| + | public function setPrenom($prenom) | ||
| + | { | ||
| + |         $this-> | ||
| + | return $this; | ||
| + | } | ||
| + | |||
| + | /** | ||
| + | * Get prenom | ||
| + | * | ||
| + |      * @return string  | ||
| + | */ | ||
| + | public function getPrenom() | ||
| + | { | ||
| + |         return $this-> | ||
| + | } | ||
| + | |||
| + | /** | ||
| + | * Set dateinscription | ||
| + | * | ||
| + | * @param date $dateinscription | ||
| + | * @return Utilisateurs | ||
| + | */ | ||
| + | public function setDateinscription($dateinscription) | ||
| + | { | ||
| + |         $this-> | ||
| + | return $this; | ||
| + | } | ||
| + | |||
| + | /** | ||
| + | * Get dateinscription | ||
| + | * | ||
| + | * @return date | ||
| + | */ | ||
| + | public function getDateinscription() | ||
| + | { | ||
| + |         return $this-> | ||
| + | } | ||
| + | |||
| + | /** | ||
| + | * Set age | ||
| + | * | ||
| + | * @param integer $age | ||
| + | * @return Utilisateurs | ||
| + | */ | ||
| + | public function setAge($age) | ||
| + | { | ||
| + |         $this-> | ||
| + | return $this; | ||
| + | } | ||
| + | |||
| + | /** | ||
| + | * Get age | ||
| + | * | ||
| + |      * @return integer  | ||
| + | */ | ||
| + | public function getAge() | ||
| + | { | ||
| + |         return $this-> | ||
| + | } | ||
| + | |||
| + | /** | ||
| + | * Set nom | ||
| + | * | ||
| + | * @param string $nom | ||
| + | * @return Utilisateurs | ||
| + | */ | ||
| + | public function setNom($nom) | ||
| + | { | ||
| + |         $this-> | ||
| + | return $this; | ||
| + | } | ||
| + | |||
| + | /** | ||
| + | * Get nom | ||
| + | * | ||
| + |      * @return string  | ||
| + | */ | ||
| + | public function getNom() | ||
| + | { | ||
| + |         return $this-> | ||
| + | } | ||
| + | |||
| + | /** | ||
| + | * Set adulte | ||
| + | * | ||
| + | * @param boolean $adulte | ||
| + | * @return Utilisateurs | ||
| + | */ | ||
| + | public function setAdulte($adulte) | ||
| + | { | ||
| + |         $this-> | ||
| + | return $this; | ||
| + | } | ||
| + | |||
| + | /** | ||
| + | * Get adulte | ||
| + | * | ||
| + |      * @return boolean  | ||
| + | */ | ||
| + | public function getAdulte() | ||
| + | { | ||
| + |         return $this-> | ||
| + | } | ||
| + | |||
| + | /** | ||
| + | * Set categorie | ||
| + | * | ||
| + | * @param Categories $categorie | ||
| + | * @return Utilisateurs | ||
| + | */ | ||
| + | public function setCategorie(\Categories $categorie = null) | ||
| + | { | ||
| + |         $this-> | ||
| + | return $this; | ||
| + | } | ||
| + | |||
| + | /** | ||
| + | * Get categorie | ||
| + | * | ||
| + |      * @return Categories  | ||
| + | */ | ||
| + | public function getCategorie() | ||
| + | { | ||
| + |         return $this-> | ||
| + | } | ||
| + | |||
| + | /** | ||
| + | * Add iddroit | ||
| + | * | ||
| + | * @param Droit $iddroit | ||
| + | * @return Utilisateurs | ||
| + | */ | ||
| + | public function addDroit(\Droit $iddroit) | ||
| + | { | ||
| + |         $this-> | ||
| + | return $this; | ||
| + | } | ||
| + | |||
| + | /** | ||
| + | * Get iddroit | ||
| + | * | ||
| + |      * @return Doctrine\Common\Collections\Collection  | ||
| + | */ | ||
| + | public function getIddroit() | ||
| + | { | ||
| + |         return $this-> | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + |   * Après génération, | ||
| + | |||
| + | <sxh php; | ||
| + | $driverImpl = $config-> | ||
| + | $config-> | ||
| + | </ | ||
| + | |||
| + | ===== Sérialisation, | ||
| + | |||
| + | Pour permettre la sérialisation d' | ||
| + | |||
| + | ==== Au niveau des models ==== | ||
| + | |||
| + | Sur-définir éventuellement la méthode magique **_sleep** des classes, pour définir les membres à sérialiser : | ||
| + | |||
| + | <sxh php;Model utilisateur> | ||
| + | public function __sleep(){ | ||
| + |     	return array(' | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | S'il faut également prévoir la sérialisation des objets dépendants, | ||
| + | |||
| + | Exemple : sérialisation du groupe de l' | ||
| + | |||
| + | <sxh php;Model utilisateur> | ||
| + | /** | ||
| + | * @var \Groupe | ||
| + | * | ||
| + |      * @ManyToOne(targetEntity=" | ||
| + | * @JoinColumns({ | ||
| + |       | ||
| + | * }) | ||
| + | */ | ||
| + | private $groupe; | ||
| + | </ | ||
| + | |||
| + | ==== Sauvegarde en session ==== | ||
| + | |||
| + | Utilisation de **detach** : | ||
| + | <sxh php; | ||
| + | public function save(){ | ||
| + | 		$user=DAO\getOne(" | ||
| + | 		$this-> | ||
| + | 		$this-> | ||
| + | 		echo $user-> | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== restauration depuis la session ==== | ||
| + | |||
| + | Utilisation de **merge** : | ||
| + | <sxh php; | ||
| + | public function load(){ | ||
| + | 		var_dump($this-> | ||
| + | 		$user=$this-> | ||
| + | 		$user=$this-> | ||
| + | 		var_dump($user); | ||
| + | } | ||
| </ | </ | ||