TYPO3 从数据库中删除数据
TYPO3 Remove data from the database
我已经创建了一个扩展,我想在我的 ImportAction 上导入和删除数据。
虽然导入代码段有效,但删除无效。
请注意,this 对我不起作用。
这是我目前的情况:
- 我在 TYPO3 安装上安装了我的扩展程序
- 我有静态模板
- 我已经在常量编辑器中包含了 PID
- 我清除了与缓存有关的所有内容
- 我在数据库上创建了 2 个元素,pid=4 在那里。这意味着常量编辑器设置有效。
我正在使用 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就不好了。
提前致谢,
uid
字段是 AUTO_INCREMENT
,只有在您删除并重新创建 table 时才会重置。
因此,即使在删除 100
中具有最高 uid
的行之后,下一个新行也会得到 101
作为 uid
。
你可以做一些裸体 SQL。您也可以使用一些工具,如 phpMyAdmin、Adminer 或 Sequel,如果它们在 GUI 中支持此操作。
由于 TYPO3 不会删除任何记录,而是将它们标记为已删除,您首先需要真正删除 已删除 的记录。
DELETE * FROM <table> WHERE deleted = 1;
然后你需要评估一个新的自动增量值,它可以是:
SELECT max(uid) from <table>;
将结果加 1。
因为这仍然可能是一个非常高的值(例如,如果最后一条记录没有被删除),您可能会使用一个较低的值,并且将使用下一个空闲 ID。
现在您可以将自动增量设置为您的值:
ALTER TABLE <table> AUTO_INCREMENT=<your value>;
有点晚了,但我想出了一种方法,而且效果很好。
I had to truncate my table!
这是我 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);
就这样,我的表删除成功了!
此致,
我已经创建了一个扩展,我想在我的 ImportAction 上导入和删除数据。 虽然导入代码段有效,但删除无效。
请注意,this 对我不起作用。
这是我目前的情况:
- 我在 TYPO3 安装上安装了我的扩展程序
- 我有静态模板
- 我已经在常量编辑器中包含了 PID
- 我清除了与缓存有关的所有内容
- 我在数据库上创建了 2 个元素,pid=4 在那里。这意味着常量编辑器设置有效。
我正在使用 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就不好了。
提前致谢,
uid
字段是 AUTO_INCREMENT
,只有在您删除并重新创建 table 时才会重置。
因此,即使在删除 100
中具有最高 uid
的行之后,下一个新行也会得到 101
作为 uid
。
你可以做一些裸体 SQL。您也可以使用一些工具,如 phpMyAdmin、Adminer 或 Sequel,如果它们在 GUI 中支持此操作。
由于 TYPO3 不会删除任何记录,而是将它们标记为已删除,您首先需要真正删除 已删除 的记录。
DELETE * FROM <table> WHERE deleted = 1;
然后你需要评估一个新的自动增量值,它可以是:
SELECT max(uid) from <table>;
将结果加 1。
因为这仍然可能是一个非常高的值(例如,如果最后一条记录没有被删除),您可能会使用一个较低的值,并且将使用下一个空闲 ID。
现在您可以将自动增量设置为您的值:
ALTER TABLE <table> AUTO_INCREMENT=<your value>;
有点晚了,但我想出了一种方法,而且效果很好。
I had to truncate my table!
这是我 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);
就这样,我的表删除成功了!
此致,