为了账号安全,请及时绑定邮箱和手机立即绑定

Doctrine & ManyToOne 外键问题

Doctrine & ManyToOne 外键问题

PHP
长风秋雁 2023-07-08 17:28:58
我正在尝试创建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;


查看完整回答
反对 回复 2023-07-08
  • 1 回答
  • 0 关注
  • 64 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信