2012-12-23 44 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的文檔,這裏有很多精確的。

希望這會有所幫助。