Doctrine2插入并检索新的插入ID

Nim*_*Net 46 php doctrine-orm

在Doctrine2中使用以下内容:

$user = array('username' => 'example', 'passsword' => 'changeme');

$conn->insert('users', $user);
Run Code Online (Sandbox Code Playgroud)

那么我如何获得刚刚插入的用户的最后一个ID?如果无法做到这一点,那么如何生成id以便您可以执行以下操作:

$id = //something here.
$user = array('username' => 'example', 'passsword' => 'changeme', 'id' => $id);
$conn->insert('users', $user);
Run Code Online (Sandbox Code Playgroud)

Fla*_*ask 114

如果您使用的是ORM

$em->persist($object);
$em->flush();
$object->getId();
Run Code Online (Sandbox Code Playgroud)

如果您使用的是DBAL:

$conn->lastInsertId();
Run Code Online (Sandbox Code Playgroud)

http://www.doctrine-project.org/api/dbal/2.5/class-Doctrine.DBAL.Connection.html#_lastInsertId

  • +2用于清楚地区分ORM和DBAL并回答两者. (6认同)

Nik*_*ski 7

可以使用该Doctrine\DBAL\Connection::lastInsertId()方法.

它可以与本机查询以及手动编写的插入一起使用.

示例案例:

$query = 'INSERT INTO blabla...';
$connection->executeUpdate($query, $params);

var_dump($connection->lastInsertId());
Run Code Online (Sandbox Code Playgroud)

如果使用ORM,您可以从实体管理器获取连接的实例:

$connection = $em->getConnection();
Run Code Online (Sandbox Code Playgroud)

注意:
除技术细节外,我同意@Layke为您的具体案例使用实体.