gpt4 book ai didi

php - Doctrine 2 - 多对一关系的外键不允许空值

转载 作者:IT王子 更新时间:2023-10-29 00:41:16 27 4
gpt4 key购买 nike

我的一个实体中有 ManyToOne 关系,如下所示:

class License {
// ...
/**
* Customer who owns the license
*
* @var \ISE\LicenseManagerBundle\Entity\Customer
* @ORM\ManyToOne(targetEntity="Customer", inversedBy="licenses")
* @ORM\JoinColumn(name="customer_id", referencedColumnName="id")
*/
private $customer;
// ...
}

class Customer {
// ...
/**
* Licenses that were at one point generated for the customer
*
* @var \Doctrine\Common\Collections\ArrayCollection
* @ORM\OneToMany(targetEntity="License", mappedBy="customer")
*/
private $licenses;
// ...
}

这会生成一个数据库架构,其中许可表的“customer_id”字段允许为空,这正是我不希望的。

这是我创建记录以证明它确实允许引用字段为空值的一些代码:

$em = $this->get('doctrine')->getEntityManager();
$license = new License();
// Set some fields - not the reference fields though
$license->setValidUntil(new \DateTime("2012-12-31"));
$license->setCreatedAt(new \DateTime());
// Persist the object
$em->persist($license);
$em->flush();

基本上,我不希望在没有分配客户的情况下保留许可证。是否需要设置一些注释,或者我应该只需要将客户对象传递给我的许可证的构造函数?

我使用的数据库引擎是 MySQL v5.1,我在 Symfony2 应用程序中使用 Doctrine 2。

最佳答案

https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/annotations-reference.html#annref_joincolumn

JoinColumn注解中添加nullable = false:

@ORM\JoinColumn(..., nullable=false)

关于php - Doctrine 2 - 多对一关系的外键不允许空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6136601/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com