我刚刚创建了一个名为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。
然而,两个反面字段都存在,据我所知正确映射。
有人能发现我做错了吗?
非常感谢提前。
答案 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
我希望这可以帮助别人。