2012-01-27 77 views
2

一个用户可能只有1个项目或没有项目。 (1-1..0的关系)与教条的嵌入式形式中的1到1..0关系

我正试图在symfony2中使用教义来实现。

我已经完成了1对1的关系,它非常简单。但我怎么能指定主义,当我想创建一个用户,该项目可以为空? (而不是插入新行和刚刚离开id_item空)

这是我有:

// 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..0的关系。

编辑出真正的问题。编辑是大胆的。

回答

0

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

+0

我认为assert与它无关,除了joincolumn注释中的空值之外,我没有看到任何“有效的空值”。我编辑了我的问题,现在我的问题是当我尝试创建没有项目的新用户时,它尝试插入一个空白值的新项目。 – jonv1 2012-01-30 17:23:12

+0

你有在表单的树枝userItem.name? – 2012-02-01 10:24:22

+0

是的。我必须去除它或类似的东西吗? – jonv1 2012-02-01 19:20:14