slam4:php:codeigniter:doctrine

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

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:33] – [Génération des classes] jcheronslam4:php:codeigniter:doctrine [2019/08/31 14:21] (Version actuelle) – modification externe 127.0.0.1
Ligne 109: Ligne 109:
  
 Logiquement, Doctrine est prêt à fonctionner.\\ Logiquement, Doctrine est prêt à fonctionner.\\
-Vérifier que la page d'accueil ne produit pas d'erreurs : http://localhost/doctrine_CI/+Vérifier que votre page d'accueil ne produit pas d'erreurs : http://localhost/siteURL/
  
 ===== Création des classes métier ===== ===== Création des classes métier =====
Ligne 261: Ligne 261:
 </code> </code>
  
-Tester en allant à l'adresse http://localhost/testPhp/utilisateurs/all/+Tester en allant à l'adresse /utilisateurs/all/
  
 {{:slam4:php:codeigniter:users-list.png?|}} {{:slam4:php:codeigniter:users-list.png?|}}
Ligne 635: Ligne 635:
  
 <sxh bash;title:console;gutter:false> <sxh bash;title:console;gutter:false>
-php doctrine-cli.php orm:generate-entities models+php doctrine-cli.php orm:generate-entities --generate-annotations=true models
 </sxh> </sxh>
 L'exécution devrait retourner un résultat semblable à celui-ci : L'exécution devrait retourner un résultat semblable à celui-ci :
Ligne 877: Ligne 877:
 $driverImpl = $config->newDefaultAnnotationDriver(APPPATH.'models'); $driverImpl = $config->newDefaultAnnotationDriver(APPPATH.'models');
 $config->setMetadataDriverImpl($driverImpl); $config->setMetadataDriverImpl($driverImpl);
 +</sxh>
 +
 +===== Sérialisation, session php =====
 +
 +Pour permettre la sérialisation d'instances de models en session, il est nécessaire de respecter certaines étapes :
 +
 +==== 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('id','login','password','nom','prenom','mail','monde','groupe');
 +    }
 +</sxh>
 +
 +S'il faut également prévoir la sérialisation des objets dépendants, préciser CASCADE="ALL" et FETCH="EAGER" sur les annotations concernées :
 +
 +Exemple : sérialisation du groupe de l'utilisateur :
 +
 +<sxh php;Model utilisateur>
 +    /**
 +     * @var \Groupe
 +     *
 +     * @ManyToOne(targetEntity="Groupe",cascade={"all"}, fetch="EAGER")
 +     * @JoinColumns({
 +       @JoinColumn(name="groupe_id", referencedColumnName="id")
 +     * })
 +     */
 +    private $groupe;
 +</sxh>
 +
 +==== Sauvegarde en session ====
 +
 +Utilisation de **detach** :
 +<sxh php;sauvegarde dans un contrôleur>
 + public function save(){
 + $user=DAO\getOne("Utilisateur", 1);
 + $this->doctrine->em->detach($user);
 + $this->session->set_userdata("user",$user);
 + echo $user->getNom()." enregistré";
 + }
 +</sxh>
 +
 +
 +==== restauration depuis la session ====
 +
 +Utilisation de **merge** :
 +<sxh php;sauvegarde dans un contrôleur>
 + public function load(){
 + var_dump($this->session->all_userdata());
 + $user=$this->session->userdata("user");
 + $user=$this->doctrine->em->merge($user);
 + var_dump($user);
 + }
 </sxh> </sxh>
  • slam4/php/codeigniter/doctrine.1357867997.txt.gz
  • Dernière modification : il y a 6 ans
  • (modification externe)