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 :
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;
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 :
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
        )));
 
 
    }
SujetRepository:
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();
    }
j'ai ensuite creé avec les fixtures :
un user avec username "anonyme" .


Ma logique marche .
La Question : es-ce que je peux faire mieux ?
Merci a tous .