如何在 ORM Doctrine2 中手动设置/保留主键
Posted
技术标签:
【中文标题】如何在 ORM Doctrine2 中手动设置/保留主键【英文标题】:how to manually set/persist a primary key in ORM Doctrine2 【发布时间】:2015-06-01 18:57:25 【问题描述】:在我的表中,主键是 ISBN,所以我需要在表单中添加新书时手动设置它。添加 ISBN 123
的新图书时,数据库中的 ISBN 为空白。
实体:
/**
* @var string
*
* @ORM\Column(name="isbn", type="string", length=45)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $isbn;
public function setIsbn($isbn)
$this->isbn = $isbn;
return $this;
public function getIsbn()
return $this->isbn;
表格类型:
$builder
->add('isbn')
控制器:
if ($form->isValid())
$em = $this->getDoctrine()->getManager();
$em->persist($entity);
$em->flush();
添加 ISBN 123 的新图书时
这会导致数据库中的 ISBN 为空白(但不为空,如果这很重要)
【问题讨论】:
【参考方案1】:你不需要@ORM\GeneratedValue(strategy="IDENTITY")
注解,它是用来生成ID的,你自己提供。
【讨论】:
【参考方案2】:您可能需要将标识符策略设置为无,@ORM\GeneratedValue(strategy="None")
【讨论】:
只是一个小小的提醒,它是大写的 NONE:@ORM\GeneratedValue(strategy="NONE")
以上是关于如何在 ORM Doctrine2 中手动设置/保留主键的主要内容,如果未能解决你的问题,请参考以下文章
如何按 Doctrine2 中没有 @Column 注释的实体的属性进行搜索?