2012-12-23 47 views
0

我有一个包含与另一个实体的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 __ \应用程序\模型\ Produto \ Produto

+1

尝试运行模式检查'./vendor/bin/doctrine-module orm:validate-schema' – Sam

回答

1

这是正常操作。你加入的模型是懒加载的,所以当你不调用它时,你只会有一个代理。

您可以修改载荷类型加入模型,可以设置为EAGER模式:

@ORM\OneToOne(targetEntity="Application\Model\Produto\Produto") 
@ORM\JoinColumn(name="cod_produto", referencedColumnName="codigo", **fetch='EAGER'**) 

但它不是真的在这里,除非你需要这个连接的数据everytimes建议报告。

查看Doctrine的文档,这里有很多精确的。

希望这会有所帮助。