我有一个实体,其中包含与另一个实体的OneToOne关系:
/**
* @ORM\Entity
* @ORM\Table(name="tb_promocao")
*/
class Promocao {
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $codigo;
/**
* @ORM\OneToOne(targetEntity="Application\Model\Produto\Produto")
* @ORM\JoinColumn(name="cod_produto", referencedColumnName="codigo")
*/
private $produto;
}
/**
* @ORM\Entity
* @ORM\Table(name="tb_produto")
*/
class Produto {
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $codigo;
(...)
}
问题在于,当我尝试在Promocao中提供获取实体时,属性$ produto未正确填充Produto实体。
Produto实体未正确映射到接收关系的属性。
对象:EntityProxy__CG __ \ Application \ Model \ Produto \ Produto
答案 0 :(得分:1)
这是正常的操作。您加入的模型是延迟加载的,所以当您不调用它时,您将只有一个代理。
您可以修改加载模型的加载类型,将其设置为EAGER模式:
@ORM\OneToOne(targetEntity="Application\Model\Produto\Produto")
@ORM\JoinColumn(name="cod_produto", referencedColumnName="codigo", **fetch='EAGER'**)
但是,除非你每次都需要这些联合数据,否则这里并没有真正推荐。
检查Doctrine文档,对此有很多准确性。
希望这有帮助。