Я тестирую функциональность DataHandler для внутреннего модуля, и мой простой скрипт вызывает ошибку.
Часть сценария:
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Core\DataHandling\DataHandler;
$dataHandler = GeneralUtility::makeInstance(DataHandler::class);
$cmd['pages']['2224']['delete'] = 1;
$dataHandler->start([], $cmd);
$dataHandler->process_cmdmap();
Ошибка:
Неустранимая ошибка: Uncaught Doctrine \ DBAL \ Driver \ Mysqli \ MysqliException: неизвестный столбец 'uid' в'список полей' в /var/www/vhosts/#mysite#/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/Mysqli/MysqliStatement.php:94 трассировки стека: # 0 / var / www / vhosts / #mysite # / vendor / doctrine / dbal / lib / Doctrine / DBAL / Driver / Mysqli / MysqliConnection.php (120): Doctrine \ DBAL \ Driver \ Mysqli \ MysqliStatement -> __ construct (объект (mysqli), 'SELECT uid
FR... ') # 1 /var/www/vhosts/#mysite#/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(844): Doctrine \ DBAL \ Driver \ Mysqli \ MysqliConnection-> prepare ('SELECT uid
FR ...') # 2 /var/www/vhosts/#mysite#/vendor/doctrine/dbal/lib/Doctrine/DBAL/Query/QueryBuilder.php(206): Doctrine \ DBAL \ Connection-> executeQuery ('SELECT uid
FR ...', Array, Array) # 3 /var/www/vhosts/#mysite#>/typo3/sysext/core/Classes/Database/Query/QueryBuilder.php(187): Doctrine \ DBAL \ Query \ QueryBuilder-> execute () # 4 в / var / www / vhosts / # mysite #/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractMySQLDriver.php в строке 71
Я не понимаю, как, по-видимому, не удается найти поле uid
, которое в стандартной таблицеу страниц определенно есть ... у кого-нибудь есть идеи, что я мог бы сделать, чтобы эта работа работала?
Мои другие скрипты для вставки и обновления страниц работают просто отлично - как этот:
$newPage = array(
'pid' => 3,
'hidden' => 0,
'title' => 'test'
);
$data['pages']['NEW_10'] = $newPage;
$dataHandler->start($data, []);
$dataHandler->process_datamap();
РЕДАКТИРОВАТЬ Я нашел решение, но не использовал этот метод
Ответы теперь должны быть даны только для этой конкретной проблемы с использованием DataHandler
, мой обходной путь теперь такой (найдено здесь ):
GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('pages')
->delete(
'pages',
[ 'uid' => (int)2224]
);