Doctrine实体映射不正确

时间:2016-02-28 16:43:20

标签: orm doctrine-orm zend-framework2

我刚刚创建了一个名为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#product指的是不存在的反面字段Application \ Entity \ Products#reviews。

  • 关联Application \ Entity \ ProductReviews#user指的是不存在的反面字段Application \ Entity \ Users#reviews。

然而,两个反面字段都存在,据我所知正确映射。

有人能发现我做错了吗?

非常感谢提前。

1 个答案:

答案 0 :(得分: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

我希望这可以帮助别人。