symfony doctrine验证实体关系错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了symfony doctrine验证实体关系错误相关的知识,希望对你有一定的参考价值。

我有两个实体用户和设备具有一对多双向关系。

问题是在我运行此命令时

php bin/console doctrine:schema:validate

我明白了

* The association AppEntityUser#devices refers to the owning side field AppEntityDevice#user which is not defined as the association, but as the field.

* The association AppEntityUser#devices refers to the owning side field AppEntityDevice#user which does not exist.

用户实体

/**
 * @var int
 * @ORMColumn(name="id", type="integer")
 * @ORMId
 * @ORMGeneratedValue(strategy="AUTO")
 */
private $id;

/**
 * @ORMOneToMany(targetEntity="Device", mappedBy="user")
 */
private $devices;

设备实体

/**
 * @ORMId()
 * @ORMGeneratedValue()
 * @ORMColumn(type="integer")
 */
private $id;


/**
 * @ORMColumn(type="integer",name="user_id")
 * @ORMManyToOne(targetEntity="User", inversedBy="devices")
 * @ORMJoinColumn(name="user_id", referencedColumnName="id", nullable=true)
 */
private $user;
答案

是的,您必须在数据库表中将用户定义为association not as a field

您的设备实体应该像:

/**
 * @ORMManyToOne(targetEntity="User", inversedBy="devices")
 * @ORMJoinColumn(name="user_id", referencedColumnName="id", nullable=true)
 */
private $user;

名为user的字段不应该在您的表中,它会自动生成一个名为user_id的字段。您无需手动添加它。

有关更多信息,请参阅Symfony Doctrine associations

以上是关于symfony doctrine验证实体关系错误的主要内容,如果未能解决你的问题,请参考以下文章

Symfony Doctrine:一对多关系正在删除父实体

Symfony Doctrine 关系 - 删除反面的实体

Doctrine symfony使用OneToMany删除实体 - ManyToOne关系

Symfony Doctrine 关系在 PhpUnit 测试中为空

Symfony2 Doctrine 错误:无法计算使用 HAVING 子句的查询。使用输出步行器进行分页

Symfony2 - Doctrine - 在实体管理器刷新调用中捕获错误