Doctrine 2在manyToOne关系中不能使用nullable = false?

User有一个关联的Package 。 许多用户可以参考相同的包。 没有定义Package User不能存在。 User应该拥有这个关系。 关系是双向的,所以Package中有零个或更多的用户。

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

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

说关系ManyToOne没有nullablenullable的属性。 我错过了什么?

 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; } 

编辑 :解决。 请注意,这是错误的 (注意双引号):

  @ORM\JoinColumn(name="package_id", referencedColumnName="id", nullable="false") 

虽然这是正确的:

 @ORM\JoinColumn(name="package_id", referencedColumnName="id", nullable=false) 

One Solution collect form web for “Doctrine 2在manyToOne关系中不能使用nullable = false?”

在ManyToOne关系上使用JoinColumn注释:

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

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

  • 如何在Symfony 2中caching?
  • 在Symfony2中访问与Bundle相关的文件
  • 条件扩展模板
  • 使用Symfony2 / Symfony3中的FOSUserBundle删除/用电子邮件replace用户名字段
  • 学说 - 通过这种关系find了一个新的实体
  • 如何在Controller中获取资源的完整url?
  • 如何在Symfony2控制台命令中设置环境
  • 是否有一种内置的方式来获取Doctrine 2实体中所有已更改/更新的字段
  • 当尝试使用symfony时,cURL错误60:sslauthentication问题
  • symfony2重写规则.htaccess app.php
  • 如何安装与Composer的jQuery?