Причиной ошибки DataHandler «Неизвестный столбец« uid »в« списке полей »» - PullRequest
0 голосов
/ 02 февраля 2019

Я тестирую функциональность 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]
    );
...