一个用户可能只有一个项目或没有项目。 (1-1..0的关系)与doctrine和symfony2嵌入形式的1到1..0关系
我正试图在symfony2中使用教义来实现。
我已经完成了1对1的关系,它非常简单。但是我怎样才能指定这样一个原则:当我想创建一个用户时,该项目可以为空? (而不是插入新行和刚刚离开id_item空)
这是我有:
user.orm.yml文件
oneToOne:
userItem:
targetEntity: SOA\AXBundle\Entity\Items
cascade: ["remove", "persist"]
joinColumn:
name: id_item
referencedColumnName: id
nullable: true
和当然,我创建ItemsTypeForm类,在我userstypeform类添加类型:
// UsersTypeForm Class
->add('userItem', new \SOA\AXBundle\Form\ItemsTypeForm())
控制器动作是这样的,
public function addUserAction(Request $request) {
$user = new User();
$form = $this->createForm(new UseType(), $user);
if ($request->getMethod() == 'POST') {
$form->bindRequest($request);
if ($form->isValid()) {
$em = $this->getDoctrine()->getEntityManager();
$em->persist($user);
$em->flush();
return $this->redirect($this->generateUrl('homepage'));
}
}
}
当我添加一个新用户时,一切都很顺利。插入用户以及项目。但是,当我尝试添加它没有项目(用户项目字段为空),我得到以下错误的用户:
SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'name' cannot be null
它试图插入项目,空值。
虽然我可以与1对1的关系生活,但我想了解如何创建1对1..0的关系。
你能展示你如何坚持数据吗? – Cyprian
我添加了控制器操作 – Rohitha