原则2在 many ToOne 关系中不能使用 nullable = false?

一个 User有一个与之相关联的 Package。许多用户可以引用同一个包。如果没有定义 PackageUser就不能存在。User应该拥有这个关系。关系是双向的,因此 Package中有零个或多个用户。

这些要求导致了原则2中 PackageUserOneToManyManyToOne关系。但是 user表中的 package_id(即外键)允许 null值。我试过设置 nullable=false但是命令:

 php app/console doctrine:generate:entities DL --path="src" --no-backup

说明关系 ManyToOne.我错过了什么?没有属性 nullable

class User
{


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


/**
* @ORM\ManyToOne(targetEntity="Package", inversedBy="users")
*/
private $package;


}


class Package
{


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


/**
* @ORM\OneToMany(targetEntity="User", mappedBy="package")
*/
private $users;


}
94054 次浏览

在 ManyToOne 关系中使用 JoinColumn 注释:

/**
* @ORM\ManyToOne(targetEntity="Package", inversedBy="users")
* @ORM\JoinColumn(name="package_id", referencedColumnName="id", nullable=false)
*/
private $package;

ManyToOne 本身不能为空,因为它与特定列无关。另一方面,JoinColumn 标识数据库中的列。因此,您可以使用“正常”属性,如可空或唯一!

Only @ORM\JoinColumn(nullable=false) is required