Я создал расширение, и я хотел бы импортировать и удалять данные на моем ImportAction.
Хотя фрагмент импорта работает, удаление — нет.
Обратите внимание, что этот не работал для меня.
Вот что у меня есть:
Я использую 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();
Вот код, который успешно импортирует данные (здесь я использую USE в верхней части моего PHP-файла, поэтому существует класс myImport ::).
$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);
Как я могу удалить все элементы из моей базы данных в одиночку с идентификаторами? Это не будет хорошо, если идентификатор достигает 254206782.
Заранее спасибо,
uid
поле AUTO_INCREMENT
, который сбрасывается только когда вы удаляете + воссоздать таблицу.
Так что даже после удаления строки с самым высоким uid
из 100
, следующий новый ряд получит 101
как uid
,
Вы можете сделать с некоторым голым SQL. Также вы можете использовать некоторые инструменты, такие как phpMyAdmin, Adminer или Sequel, если они поддерживают эти действия в графическом интерфейсе.
Так как TYPO3 не удаляет какие-либо записи, но помечает их как удаленные, вам сначала нужно действительно удалить удаленный записей.
DELETE * FROM <table> WHERE deleted = 1;
Затем вам нужно оценить новое значение автоинкремента, которое может быть:
SELECT max(uid) from <table>;
Добавьте 1 к результату.
Поскольку это все еще может быть очень высоким значением (например, если последняя запись не была удаленный) вы можете использовать меньшее значение, и будет использоваться следующий свободный идентификатор.
И теперь вы можете установить автоинкремент на ваше значение:
ALTER TABLE <table> AUTO_INCREMENT=<your value>;
Немного поздно, но я придумала способ сделать это, и это отлично работает.
Я должен был усечь мой стол!
Это код моего 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);
И просто, удаление моих таблиц прошло успешно!
С наилучшими пожеланиями,