2016-02-28 140 views
0

我剛剛創建了一個名爲ProductReviews的新實體,其中包含以下兩個連接。學說實體映射不正確

/** 
* @var \Application\Entity\Products 
* 
* @ORM\ManyToOne(targetEntity="Application\Entity\Products", inversedBy="reviews") 
* @ORM\JoinColumns({ 
* @ORM\JoinColumn(name="product_id", referencedColumnName="product_id") 
* }) 
*/ 
private $product; 

/** 
* @var \Application\Entity\Users 
* 
* @ORM\ManyToOne(targetEntity="Application\Entity\Users", inversedBy="reviews") 
* @ORM\JoinColumns({ 
* @ORM\JoinColumn(name="user_id", referencedColumnName="user_id") 
* }) 
*/ 
private $user; 
對我的產品實體

/** 
* @var \Doctrine\ORM\PersistentCollection 
* 
* @ORM\OneToMany(targetEntity="Application\Entity\ProductReviews", cascade={"persist"}, mappedBy="product") 
*/ 
private $reviews; 
在我的用戶實體

最後我有

/** 
* @var \Doctrine\ORM\PersistentCollection 
* 
* @ORM\OneToMany(targetEntity="Application\Entity\ProductReviews", mappedBy="user") 
* }) 
*/ 
private $reviews; 

當我去驗證我的單位我收到以下錯誤

[Mapping] FAIL - 實體類'Application \ Entity \ ProductReviews'映射無效:

  • 關聯Application \ Entity \ ProductReviews#產品是指不存在的反面字段Application \ Entity \ Products#reviews。

  • 關聯Application \ Entity \ ProductReviews#user引用了不存在的反面字段Application \ Entity \ Users#reviews。

但是,兩個反面字段都存在,並且據我所知可以正確映射。

任何人都可以發現我做錯了什麼嗎?

非常感謝提前。

回答

0

我已經想通了。這個問題是由Doctrines緩存引起的,通過清除它現在映射的實體正確。

我用下面的命令行命令來清除緩存。

php ./vendor/doctrine/doctrine-module/bin/doctrine-module orm:clear-cache:query 
php ./vendor/doctrine/doctrine-module/bin/doctrine-module orm:clear-cache:metadata 
php ./vendor/doctrine/doctrine-module/bin/doctrine-module orm:clear-cache:result 

以下檢查實體映射。

php ./vendor/doctrine/doctrine-module/bin/doctrine-module orm:validate-schema 

我希望這可以幫助別人。