3
respostas

Erro ao usar EntityManagerInterface no controller?

Olá!

Fiz o require o ORM

composer require symfony/orm-pack

criei o banco

php bin\console doctrine:database:create

Ao criar o construct no controller usando EntityManagerInterface eu não consigo chamar os métodos persist e flush, pois não reconhecem o método

Ao verificar , use Doctrine\ORM\EntityManagerInterface; , fala que tem 2 definições?

O que deve fazer para resolver esse erro?

<?php

namespace App\Controller;

use App\Entity\Medico;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;

class MedicoController{

    /**
     * @var EntityManagerInterface
     */
    private $entityManager;

    public function __construct (EntityManagerInterface $entityManager){
        $this->entityManager = $entityManager;
    }

    /**
     * @Route("/medico", methods={"POST"})
     */
    public function novo(Request $request): Response{

        $corpoRequisicao = $request->getContent();


        $dadosObjeto = json_decode($corpoRequisicao);

        $medico = new Medico();
        $medico->crm = $dadosObjeto->crm;
        $medico->nome = $dadosObjeto->nome;

        $this->entityManager->persist();
        $this->entityManager->flush();


        return new JsonResponse($medico);
    }

}
3 respostas

Olá, Tiago. Não entendi bem o erro. Você pode postar a mensagem exata de erro que você recebe aqui, por favor?

Olá Vinicius.... então a minha IDE VSCode fala que tem erro no código pois não encontra os métodos abaixo:

        $this->entityManager->persist();
        $this->entityManager->flush();

mesmo importando use Doctrine\ORM\EntityManagerInterface;, o código fica com erro.

Não é um erro de execução e sim da codificação, pois não reconhece os métodos....

Fala, Tiago.

Então não acontece nenhum erro na execução?

VSCode não é uma IDE. É um editor de textos, apenas. Provavelmente ele não conseguiu inferir o tipo da propriedade $entityManager.

Eu não uso VSCode então não sei como fazer ele reconhecer, mas se o código está funcionando, eu seguiria com o treinamento, preferencialmente utilizando uma IDE. :-)