Doutrina unidirecional individual
No Symfony 3 com Doctrine, estou tentando obter um relacionamento unidirecional individual com as duas tabelas que compartilham a mesma chave primária em funcionamento. Para fazer isso, estou tentando replicar o exemplo noMapeamento da Associação de Doutrinas página.
No entanto, a documentação individual individual não tem exemplos de setters e getters - e também não há definição do campo id na entidade de destino. Então eu tentei experimentar em torno de mim.
Estas são minhas entidades:
class Country
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer", precision=0, scale=0, nullable=false, unique=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @ORM\OneToOne(targetEntity="MySubEntity", cascade={"persist", "remove"})
* @ORM\JoinColumn(name="id", referencedColumnName="id", nullable=true)
*/
private $mysubentity;
[...]
/**
* @return MySubEntity
*/
public function getMySubEntity()
{
return $this->mysubentity;
}
/**
* @param MySubEntity $mysubentity
*/
public function setMySubEntity($mysubentity)
{
$this->mysubentity = $mysubentity;
}
}
class MySubEntity
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer", precision=0, scale=0, nullable=false, unique=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
[..]
/**
* Set id
*
* @param $id
*
* @return MySubEntity
*/
public function setId($id)
{
$this->id = $id;
return $this;
}
/**
* Get id
*
* @return int
*/
public function getId()
{
return $this->id;
}
}
Quando persisto na entidade do país, receboIntegrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails
. Ao inspecionar os dados, vejo que o Doctrine tentou definir o id do MySubEntity como 0.
Alguém tem uma idéia do que eu preciso fazer para que o campo MySubEntity $ id seja preenchido automaticamente a partir da entidade Country?