Exemplo:
$aluno = new Aluno();
$aluno->setNome('Eduardo');
$em->persist($aluno);
$em->flush();
$id = $aluno->getId();
Exemplo:
$aluno = new Aluno();
$aluno->setNome('Eduardo');
$em->persist($aluno);
$em->flush();
$id = $aluno->getId();
Olá, Eduardo.
Após exeuctar o flush, a propriedade anotada com @Id
na sua entidade é preenchida "autogicamente" pelo Doctrine.
Bem, no meu caso isso não acontece, após salvar o objeto não consigo obter o id do registro criado mesmo na minha entidade estando com a anotação @Id, pode colocar um exemplo? Obrigado!
Fala, Eduardo. Compartilha seu código rapidinho pra eu entender como você tá fazendo?
Então, abaixo segue um pequeno trecho, por motivo de confidencialidade não posso colocar o código na integra.
$this->em->getConnection()->beginTransaction();
$inscricao = new Inscricao();
$inscricao->setSituacao("I");
$this->em->persist($inscricao);
$this->em->flush();
$this->em->commit();
$idInscricao = $inscricao->getId();
Abaixo segue o codigo da minha entity inscricao
<?php
namespace PCN\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
/**
* Inscricao
*
* @ORM\Table(name="NOME_DA_TABELA")
* @ORM\Entity
*/
class Inscricao implements \JsonSerializable
{
/**
* @var integer
*
* @ORM\Column(name="ID_INSCRICAO", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="SEQUENCE")
* @ORM\SequenceGenerator(sequenceName="NOME_DATA_SEQUENCE", allocationSize=1, initialValue=1)
*/
private $id;
}
Fala, Eduardo.
Você não precisa abrir a transação explicitamente. Pode tirar o beginTransaction e o commit.
A sequence que você está usando existe no banco? Pois nós não utilizamos essa estratégia no treinamento.