嵌入式表格中的1到1..0关系与学说

时间:2012-01-27 23:57:43

标签: php database symfony doctrine

一个用户可能只有一个项目或没有。 (1-1..0关系)

我正在尝试用doctrine在symfony2中实现这一目标。

我已经完成了一对一的关系,这很简单。但是,我如何指定当我想创建用户时,该项可以为空? (并且不要插入新行,只留下id_item null)

这就是我所拥有的:

// User Class
     /**
     * 
     * @ORM\OneToOne(targetEntity="Items", cascade={"persist"})
     * @ORM\JoinColumn(name="id_item", referencedColumnName="id", nullable=true)
     * 
     * @var SOA\AXBundle\Entity\Items $userItem
     * @Assert\Type(type="SOA\AXBundle\Entity\Items")
     */ 
    protected $userItem;

当然,我创建了ItemsTypeForm类,并在我的userstypeform类中添加了类型:

// UsersTypeForm Class
     ->add('userItem', new \SOA\AXBundle\Form\ItemsTypeForm())

当我添加新用户时,一切都很顺利。插入用户以及项目。但是当我尝试添加没有项目的用户(用户项目字段为空)时,我收到以下错误:

SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'name' cannot be null

正在尝试插入包含空值的项目。

虽然我可以和1对1的关系生活,但我想学习如何建立1比1的关系。

使用真实问题进行编辑。编辑为粗体。

1 个答案:

答案 0 :(得分:0)

Assert的注释导致了问题。您必须在Assert中设置null值有效。