TYPO3 Удалить данные из базы данных

Я создал расширение, и я хотел бы импортировать и удалять данные на моем ImportAction.
Хотя фрагмент импорта работает, удаление — нет.

Обратите внимание, что этот не работал для меня.

Вот что у меня есть:

  1. Я установил свое расширение на мою установку TYPO3
  2. У меня есть статический шаблон включен
  3. Я включил PID на постоянном редакторе
  4. Я очистил все, что связано с кешем
  5. Я создал 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();

Вот код, который успешно импортирует данные (здесь я использую 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.

Заранее спасибо,

1

Решение

uid поле AUTO_INCREMENT, который сбрасывается только когда вы удаляете + воссоздать таблицу.

Так что даже после удаления строки с самым высоким uid из 100, следующий новый ряд получит 101 как uid,

0

Другие решения

Вы можете сделать с некоторым голым SQL. Также вы можете использовать некоторые инструменты, такие как phpMyAdmin, Adminer или Sequel, если они поддерживают эти действия в графическом интерфейсе.

Так как TYPO3 не удаляет какие-либо записи, но помечает их как удаленные, вам сначала нужно действительно удалить удаленный записей.

DELETE * FROM <table> WHERE deleted = 1;

Затем вам нужно оценить новое значение автоинкремента, которое может быть:

SELECT max(uid) from <table>;

Добавьте 1 к результату.

Поскольку это все еще может быть очень высоким значением (например, если последняя запись не была удаленный) вы можете использовать меньшее значение, и будет использоваться следующий свободный идентификатор.

И теперь вы можете установить автоинкремент на ваше значение:

ALTER TABLE <table> AUTO_INCREMENT=<your value>;
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);

И просто, удаление моих таблиц прошло успешно!

С наилучшими пожеланиями,

0
По вопросам рекламы [email protected]