Bonjour, j'apprends petit a petit symfony mais je me pose une question dont je n'ai pas eu de réponses clairs dans mes recherches.
Je voulais savoir a quoi cela servait d'utiliser l'entityManager? je sais qu'on peut rechercher des fonctions dans les repository mais cela est faisable sans, quel est l'interet spécifique de l'utiliser ?
par exemple :
class HomeController extends AbstractController
{
private $entityManager;
public function __construct(EntityManagerInterface $entityManager)
{
$this->entityManager = $entityManager;
}
/**
* @Route("/", name="home")
*/
public function index(): Response
{
$temoignage = $this->entityManager->getRepository(Testimony::class)->findAll();
return $this->render('home/index.html.twig',[
'temoignage'=>$temoignage
]);
}
}
merci d'avance :)
Salut, ici en l'occurence tu peux directement injecter le TestimonyRepository dans le constructeur de ton Controller ou bien dans la méthode Index. Tu n'a en effet pas besoin d'aller chercher l'entityManager :
class HomeController extends AbstractController
{
/**
* @Route("/", name="home")
*/
public function index(TestimonyRepository $testimonyRepository): Response
{
$temoignages = $testimonyRepository->findAll();
return $this->render('home/index.html.twig',[
'temoignages'=>$temoignages
]);
}
}
(Note, vaut mieux mettre le nom de la variable "temoignage" au pluriel sur un findAll().
Mais si tu veux modifier ou créer un élément que tu persistera en base, tu en aura besoin ! Prenons le cas d'un simple CRUD, sur la mérhode "edit" :
class HomeController extends AbstractController
{
private EntityManagerInterface $em;
public function __construct(EntityManagerInterface $em)
{
$this->em = $em;
}
/**
* @Route("/{id}/edit", name="testimony_edit", methods={"GET","POST"})
*/
public function edit(Request $request, Testimony $testimony): Response
{
$form = $this->createForm(Testimony::class, $testimony);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$this->em->flush();
return $this->redirectToRoute('testimony_index', [], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('testimony/edit.html.twig', [
'testimony' => $testimony,
'form' => $form,
]);
}
}
Là oui on aura besoin de l'EM.