Best practice pour persiter un objet
Bonjour,
Pouvez-vous me dire quelle est la best pratices pour persister un objet contenu par un autre objet ?
Je m'explique :
J'ai un objet User (FOSUserBundle) qui contient un attribut "shop" en relation OneToOne (persist cascade remove) avec l'entity "Shop".
L'entity Shop contient une liste d'objets en relation OneToMany (persist cascade remove) avec l'entity "MyObjet".
Si je veux ajouter un "MyObjet" dans le "Shop" d'un "User", quelle est la meilleure méthode à faire dans le controller, méthode 1) ou 2) ou 3) ?
1) Avec le UserManager de FOSUserBundle ?
Code:
1 2 3 4
| $user = $this->getUser();
$user->getShop()->addMyObjet(new MyObject());
$userManager = $container->get('fos_user.user_manager');
$userManager->updateUser($user); |
2) Entity Manager en récupérant le shop en amont ?
Code:
1 2 3 4 5
| $entityManager = $this->getDoctrine()->getManager();
$shop = $this->getUser()->getShop();
$shop->addMyObjet(new MyObject());
$entityManager->persist($shop);
$entityManager->flush(); |
3) En récupérant directement le Shop d'un User ?
Code:
1 2 3 4
| $em = $this->getDoctrine()->getManager();
$shop= $em->getRepository('AppBundle:Shop')->findByUser($user);
$entityManager->persist($shop);
$entityManager->flush(); |
Personnellement je pense que la solution 3) est idiote mais j'hésites surtout entre la 1) et la 2).
Merci d'avance.