首页 > 解决方案 > symfony 学说验证实体关系错误

问题描述

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

问题是当我运行这个命令时

php bin/console doctrine:schema:validate

我明白了

* The association App\Entity\User#devices refers to the owning side field App\Entity\Device#user which is not defined as the association, but as the field.

* The association App\Entity\User#devices refers to the owning side field App\Entity\Device#user which does not exist.

用户实体

/**
 * @var int
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;

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

设备实体

/**
 * @ORM\Id()
 * @ORM\GeneratedValue()
 * @ORM\Column(type="integer")
 */
private $id;


/**
 * @ORM\Column(type="integer",name="user_id")
 * @ORM\ManyToOne(targetEntity="User", inversedBy="devices")
 * @ORM\JoinColumn(name="user_id", referencedColumnName="id", nullable=true)
 */
private $user;

标签: phpsymfonydoctrine-orm

解决方案


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

您的设备实体应如下所示:

/**
 * @ORM\ManyToOne(targetEntity="User", inversedBy="devices")
 * @ORM\JoinColumn(name="user_id", referencedColumnName="id", nullable=true)
 */
private $user;

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

有关更多信息,请参阅Symfony 学说关联


推荐阅读