【问题标题】:how to manually set/persist a primary key in ORM Doctrine2如何在 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 为空白(但不为空,如果这很重要)

【问题讨论】:

    标签: symfony orm doctrine-orm


    【解决方案1】:

    你不需要@ORM\GeneratedValue(strategy="IDENTITY")注解,它是用来生成ID的,你自己提供。

    【讨论】:

      【解决方案2】:

      您可能需要将标识符策略设置为无,@ORM\GeneratedValue(strategy="None")

      【讨论】:

      • 只是一个小小的提醒,它是大写的 NONE:@ORM\GeneratedValue(strategy="NONE")
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-31
      • 2012-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-18
      相关资源
      最近更新 更多