这个概念是,在成功保存我的对象后,它应该更新数据库中的文本(使用 Hook)。让我们称该字段为“ succText ”。我想访问的表是 sys_file 但我只在保存对象时获得 sys_file_reference id。所以我想我可以使用 ConnectionPool 来选择这个文件引用的 sys_file行,然后在字段“ succText ”上插入数据。
我试过这个:
public function processDatamap_preProcessFieldArray(array &$fieldArray, $table, $id, \TYPO3\CMS\Core\DataHandling\DataHandler &$pObj) {
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('sys_file_reference');
$findItemsId = $queryBuilder
->select('*')
->from('sys_file_reference')
->join(
'sys_file_reference',
'sys_file',
'reference',
$queryBuilder->expr()->eq('reference.uid', $queryBuilder->quoteIdentifier('uid_local'))
)
->where(
$queryBuilder->expr()->eq('uid_local', $queryBuilder->createNamedParameter($fieldArray['downloads'], \PDO::PARAM_INT))
)
->execute();
}
但这给了我 sys_file_reference id,而不是 sys_file 表的 id 和字段值。
至于更新,我还没有尝试过,因为我还没有弄清楚如何获取需要更新的行。我猜想在找到行后使用子查询,我真的不知道。
processDatamap_preProcessFieldArray将被重命名为 post。我只有这种方式才能在后端获得结果。
提前致谢,