>source

항목의 마지막 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();

  • 답변 # 1

    $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();
    
    

  • 답변 # 2

    새 레코드를 삽입하기 위해 QueryBuilder를 사용할 때 사용할 수 있는지 확실하지 않지만 TYPO3 Docs의 마이그레이션 안내서는 새 Doctrine Database Layer에서 sql_insert_id () 메소드를 마이그레이션하는 방법을 설명합니다

    https://docs.typo3.org/typo3cms/CoreApiReference/ApiOverview/Database/Migration/Index.html#sql-insert-id

    힌트 :

    (int)$databaseConnectionForPages->lastInsertId('pages');

  • 이전 reactjs - 이전 상태가 현재 구성 요소에서 렌더링되지 않도록 상태를 지우는 방법은 무엇입니까?
  • 다음 DialogFlow를 충족시키는 Excel 파일 읽기