代码之家  ›  专栏  ›  技术社区  ›  tom

获取带有条令2的最后一个插入ID?

  •  67
  • tom  · 技术社区  · 14 年前

    我怎样才能获得带有条令2 ORM的最后一个插入ID?我没有在教义的文件中找到这个,这是可能的吗?

    5 回复  |  直到 6 年前
        1
  •  160
  •   tom    14 年前

    我必须在刷新后使用这个来获取最后一个插入ID:

    $em->persist($user);
    $em->flush();
    $user->getId();
    
        2
  •  35
  •   Community Ian Goodfellow    9 年前

    您可以在调用实体管理器的persist方法之后访问该ID。

    $widgetEntity = new WidgetEntity();
    $entityManager->persist($widgetEntity);
    $entityManager->flush();
    $widgetEntity->getId();
    

    需要刷新才能获取此ID。

    语法错误修复:在调用$EntityManager->flush()后添加了分号。

        3
  •  23
  •   u_mulder    6 年前

    如果您不使用实体,而是使用本机SQL,如图所示 here 然后您可能需要获取最后插入的ID,如下所示:

    $entityManager->getConnection()->lastInsertId()
    

    对于具有以下序列的数据库: PostgreSQL 请注意,可以将序列名作为 lastInsertId 方法。

    $entityManager->getConnection()->lastInsertId($seqName = 'my_sequence')
    

    有关更多信息,请查看GitHub上的代码 here here .

        4
  •  10
  •   beberlei    14 年前

    调用flush()可能会添加许多新实体,因此实际上没有“lastinsertid”的概念。但是,只要生成了一个标识字段,那么在调用flush之后访问ID字段,就会始终包含新的“持久”实体的ID。

        5
  •  3
  •   Tomasz Kowalczyk    8 年前

    回答这个问题有点晚了。但是,

    如果是MySQL数据库

    应该 $doctrine_record_object->id 如果工作 AUTO_INCREMENT 在数据库和表定义中定义。