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:06] – [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 357: | Ligne 357: | ||
</ | </ | ||
- | ==== Génération des classes métier ==== | + | ===== Génération des classes métier |
L' | L' | ||
Doctrine est installé en tant que Librairie. | Doctrine est installé en tant que Librairie. | ||
- | === Configuration de l' | + | ==== Configuration de l' |
Créer le fichier **doctrine-cli.php** dans le dossier **application**, | Créer le fichier **doctrine-cli.php** dans le dossier **application**, | ||
<sxh php; | <sxh php; | ||
Ligne 408: | Ligne 408: | ||
</ | </ | ||
- | === Exécution en mode console === | + | ==== Exécution en mode console |
Lancer la console, et redéfinir la variable PATH pour permettre l' | Lancer la console, et redéfinir la variable PATH pour permettre l' | ||
<sxh bash; | <sxh bash; | ||
Ligne 460: | Ligne 460: | ||
</ | </ | ||
- | === Génération des metadonnées de mapping === | + | ==== Génération des metadonnées de mapping |
Nous allons générer les metadonnées de mapping à partir de la base de données existante, au format YAML : | Nous allons générer les metadonnées de mapping à partir de la base de données existante, au format YAML : | ||
* Modifier le driver Doctrine dans le fichier Doctrine.php de application/ | * Modifier le driver Doctrine dans le fichier Doctrine.php de application/ | ||
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); | ||
+ | } | ||
</ | </ |