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标识数据库中的列。 因此,你可以使用“正常”的属性,如可空或唯一!

  • 如何在Symfony2中设置表单字段的默认值?
  • 自动注册后用户authentication
  • 在Symfony中validation没有表单的实体2
  • Symfony 2 + Doctrine 2 + PHPUnit 3.5:closuresexception的序列化
  • 如何自定义Symfony 2表单中的data-prototype属性
  • Symfony 2.x中的所有东西都应该是一个捆绑吗?
  • 在PhpStorm中使用Symfony项目时如何configuration“目录”
  • symfony2:未能写入caching目录
  • Symfony 2:从存储库创build一个服务
  • 如何使用Symfony2访问控制器之外的服务?
  • Symfony2,如何使表单标签类/ attr不同于其input?