原则实体映射不正确
Doctrine entity mapping incorrect
我刚刚创建了一个名为 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;
当我去验证我的实体时,我收到以下错误
[映射] 失败 - 实体-class 'Application\Entity\ProductReviews' 映射无效:
关联Application\Entity\ProductReviews#product指反面字段Application\Entity\Products#reviews不存在
关联Application\Entity\ProductReviews#user指的是不存在的反面字段Application\Entity\Users#reviews
然而,反面字段都存在,据我所知映射正确。
谁能指出我做错了什么?
非常感谢。
我想通了。问题是由 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
我希望这对某人有所帮助。
我刚刚创建了一个名为 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;
当我去验证我的实体时,我收到以下错误
[映射] 失败 - 实体-class 'Application\Entity\ProductReviews' 映射无效:
关联Application\Entity\ProductReviews#product指反面字段Application\Entity\Products#reviews不存在
关联Application\Entity\ProductReviews#user指的是不存在的反面字段Application\Entity\Users#reviews
然而,反面字段都存在,据我所知映射正确。
谁能指出我做错了什么?
非常感谢。
我想通了。问题是由 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
我希望这对某人有所帮助。