我正在尝试创建Language实体与User实体之间的关系,一种语言有许多用户,但一个用户有一种语言。所以我创建了如下关系:在用户.php中:/** * @ORM\ManyToOne(targetEntity="Language", inversedBy="users") * @ORM\JoinColumn(name="language_id", referencedColumnName="id") */private $language;在语言.php中/** * @var ArrayCollection * @ORM\OneToMany(targetEntity="User", mappedBy="language") */private $users;public function __construct(){ $this->users = new ArrayCollection();}我刚刚按照 Doctrine 映射文档创建了这些代码行。我已经创建了架构doctrine:schema:create command line,,当我尝试验证它时,它说:[错误] 数据库架构与当前映射文件不同步。所以我尝试doctrine:schema:update --dump-sql看看问题的原因是什么:ALTER TABLE user CHANGE language_id language_id INT DEFAULT NULL;因为我很困惑,可能是什么问题?
1 回答
犯罪嫌疑人X
TA贡献2080条经验 获得超4个赞
默认情况下,ManyToOne 关系可为空。“dump sql”显示该关系当前在您的数据库中不可为空。我不知道是否必须这样做,但要使其不可为空,您必须更新语言属性上的用户实体映射,如下所示:
/**
* @ORM\ManyToOne(targetEntity="Language", inversedBy="users")
* @ORM\JoinColumn(nullable=false, name="language_id", referencedColumnName="id")
*/
private $language;
- 1 回答
- 0 关注
- 64 浏览
添加回答
举报
0/150
提交
取消