查询生成器最后插入Id()

sch*_*iel 0 typo3 query-builder extbase typo3-9.x

我想要该条目的最后一个 UID。对于 mysql,它是“insertId()”。这在 Extbase 中是如何运作的?

$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($table);
$queryBuilder
   ->insert($table)
   ->values([
       'test_id'          => 1,
       'test2_id'         => 2,
   ]);

$queryBuilder->execute();

$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($table2);
$queryBuilder
   ->insert($table2)
   ->values([
       'uid_local'         => ?, // uid from $table
       'uid_foreign'       => 1
   ]);
$queryBuilder->execute();
Run Code Online (Sandbox Code Playgroud)

Rud*_*dde 9

您可以使用以下命令获取最后一个插入 ID$queryBuilder->getConnection()->lastInsertId();

这样就可以了:

$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($table);
$queryBuilder
   ->insert($table)
   ->values([
       'test_id'          => 1,
       'test2_id'         => 2,
   ]);

$queryBuilder->execute();
$tableUid = $queryBuilder->getConnection()->lastInsertId();

$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($table2);
$queryBuilder
   ->insert($table2)
   ->values([
       'uid_local'         => $tableUid,
       'uid_foreign'       => 1
   ]);
$queryBuilder->execute();
Run Code Online (Sandbox Code Playgroud)