查询生成器 lastInsertId()
QueryBuilder lastInsertId()
我想要条目的最后一个 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();
我有点不确定在使用 QueryBuilder 插入新记录时它是否可用,但是 TYPO3 文档中的迁移指南解释了如何在新的 Doctrine 数据库层中迁移 sql_insert_id() 方法
提示:
(int)$databaseConnectionForPages->lastInsertId('pages');
您可以通过 $queryBuilder->getConnection()->lastInsertId();
获取最后插入的 ID
这样就可以了:
$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();
我想要条目的最后一个 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();
我有点不确定在使用 QueryBuilder 插入新记录时它是否可用,但是 TYPO3 文档中的迁移指南解释了如何在新的 Doctrine 数据库层中迁移 sql_insert_id() 方法
提示:
(int)$databaseConnectionForPages->lastInsertId('pages');
您可以通过 $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();