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 [2014/12/18 08:29] – [Génération des classes] jcheronslam4:php:codeigniter:doctrine [2019/08/31 14:21] (Version actuelle) – modification externe 127.0.0.1
Ligne 879: Ligne 879:
 </sxh> </sxh>
  
-==== Sérialisation, session php ====+===== Sérialisation, session php =====
  
 Pour permettre la sérialisation d'instances de models en session, il est nécessaire de respecter certaines étapes : Pour permettre la sérialisation d'instances de models en session, il est nécessaire de respecter certaines étapes :
  
-=== Au niveau des models ===+==== Au niveau des models ====
  
-Surdéfinir éventuellement la méthode magique **_sleep** des classes, pour définir les membres à sérialiser :+Sur-définir éventuellement la méthode magique **_sleep** des classes, pour définir les membres à sérialiser :
  
 <sxh php;Model utilisateur> <sxh php;Model utilisateur>
Ligne 893: Ligne 893:
 </sxh> </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>
  • slam4/php/codeigniter/doctrine.1418887746.txt.gz
  • Dernière modification : il y a 6 ans
  • (modification externe)