TYPO3从数据库中删除数据

时间:2018-01-10 11:42:53

标签: php database typo3 typo3-7.6.x removeall

我创建了一个扩展程序,我想在ImportAction上导入和删除数据。 尽管导入代码段有效,但删除操作不会。

请注意,this对我不起作用。

这是我到目前为止所拥有的:

  1. 我在TYPO3安装上安装了我的扩展程序
  2. 我有静态模板
  3. 我已将PID包含在常量编辑器中
  4. 我清除了与缓存
  5. 有关的所有内容
  6. 我在数据库上创建了2个元素,pid = 4就在那里。这意味着常量编辑器设置有效。
  7. 我正在使用TYPO3 7.6.23

    这是我的代码不起作用:

    $objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager');
    $myRepository = $objectManager->get('BW....\MyImporter\Domain\Repository\MyRepository');
    $myRepository->removeAll();
    

    以下是成功导入数据的代码(这里我在PHP文件的顶部使用USE,这就是为什么有myImport :: class)。

     $finalTitle = 'This is a Test';
     $objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager');
     $newMyImport = $objectManager->get(myImport::class);
     $newMyImport->setTitle($finalTitle);
     $this->myRepository->add($newMyImport);
     print_r($newMyImport);
    

    如何使用ID删除数据库中的所有元素?如果ID达到254206782,那就太好了。

    提前致谢,

3 个答案:

答案 0 :(得分:0)

uid字段为AUTO_INCREMENT,只有在您删除+重新创建表格时才会重置。

因此,即使删除uid 100 101的最高行,下一个新行也会uid<div class="container"> <div class="row"> <div class="col-md-12"> <img id="imageOne" src=""> <img id="imageTwo" src=""> </div> </div> </div>

答案 1 :(得分:0)

你可以使用一些裸SQL。如果他们在GUI中支持这些操作,你也可以使用像phpMyAdmin,Adminer或Sequel这样的工具。

由于TYPO3不会删除任何记录但会将其标记为已删除,因此您首先需要删除已删除的记录。

DELETE * FROM <table> WHERE deleted = 1;

然后你需要评估一个新的自动增量值,可能是:

SELECT max(uid) from <table>;

在结果中添加1。

由于这仍然可能是一个非常高的值(例如,如果最后一条记录不是已删除),您可能会使用较低的值并使用下一个空闲ID。

现在您可以将自动增量设置为您的值:

ALTER TABLE <table> AUTO_INCREMENT=<your value>; 

答案 2 :(得分:0)

有点晚了,但我想办法做到这一点并且完美无缺。

  

我不得不截断我的桌子!

这是我的Task.php上的代码(因为我在我的调度程序上有它)。

/*Create connection to Truncate the database*/
    $servername = TYPO3_db_host;
    $username = TYPO3_db_username;
    $password = TYPO3_db_password;
    $dbname = TYPO3_db;
    // Create connection
    $databaseConnect = mysqli_connect($servername, $username, $password, $dbname);
    $repositoryRemove = "TRUNCATE TABLE tx_importer_domain_model_import";
    $repositoryAttachmentsRemove = "TRUNCATE TABLE tx_importer_domain_model_attachments";
    $mysql = mysqli_query($databaseConnect, $repositoryRemove);
    $mysql1 = mysqli_query($databaseConnect, $repositoryAttachmentsRemove);
    mysqli_close($databaseConnect);

就这样,删除我的表格是成功的!

致以最诚挚的问候,