Bonjour,
j'ai deux entités User et Sujet , un user peut ajouter plusieurs sujets . Dans la vue ,lorsque j'affiche le sujet j'affiche egalement le user qui l'a ajouté (username+imageuser ..)
Lorsque je veux supprimer un user , je veux garder ses sujets quand meme et lors de l'affichage des sujets , ces derniers auront comme username " anonyme"
Pour ce faire j 'ai implementé :
Sujet :
User :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 class sujet { ///// code ici /** * @ORM\ManyToOne(targetEntity="MyApp\UserBundle\Entity\User", cascade={"all"}) * @ORM\JoinColumn(name="user_id", referencedColumnName="id",nullable=false, onDelete="CASCADE") */ protected $user;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 class sujet { ///// code ici protected $sujets; // get et set }
User Controller :
SujetRepository:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 public function deleteAction(user $user) { $em = $this->getDoctrine()->getManager(); $selectuser = $em->getRepository('MyAppForumBundle:sujet')->findBySujet($user->getId()); /** je selectionne les sujets associé au user deja choisi **/ $ids = $user->getId(); $sujet = $em->getRepository('MyAppForumBundle:sujet')->getSujetByUser($ids); foreach ($sujet as $s) /** update pour plusieurs sujets **/ /*** les sujets reuperé auont un nouveau id_user = 1 ***/ { $p = $em->createQueryBuilder() ->update('MyAppForumBundle:sujet', 'd') ->set('d.user', '1') ->where('d.user = :v') ->setParameter('v', $s) ->getQuery() ->execute(); } /***** je supprime le user choisi au debut ***/ $em->remove($user); $em->flush(); $this->get('session')->getFlashBag()->set('message', 'Ce user disparait !!'); return $this->redirect($this->generateUrl('my_app_user_show', array( 'selectuser' => $selectuser ))); }
j'ai ensuite creé avec les fixtures :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 public function getSujetByUser($id) { return $this->getEntityManager() ->createQuery(' SELECT t FROM MyAppForumBundle:sujet t WHERE t.user=:id ') ->setParameter('id', $id) ->getResult(); }
un user avec username "anonyme" .
Ma logique marche .
La Question : es-ce que je peux faire mieux ?
Merci a tous .
Partager