我创建了一个扩展程序,我想在ImportAction上导入和删除数据。 尽管导入代码段有效,但删除操作不会。
请注意,this对我不起作用。
这是我到目前为止所拥有的:
我正在使用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,那就太好了。
提前致谢,
答案 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);
就这样,删除我的表格是成功的!
致以最诚挚的问候,