如何从TYPO3 extbase中的模型类名获取表名?

时间:2017-08-24 10:27:32

标签: typo3 extbase typo3-8.x

从特定对象获取表名的最佳方法是什么? 是否有类似的东西:

$tableName = Utility::doSomeMagic($object);

这样你就可以从Vendor \ Extkey \ Domain \ Model \ MyObject获得tx_extkey_domain_model_myobject。

2 个答案:

答案 0 :(得分:4)

您可以使用DataMapper获取模型的表名。它由存储库内部使用(至少间接地)用于说明它们正在处理什么。你可以得到一个DataMapper实例并像这样使用它:

$className = \MyVendor\MyExt\Domain\Model\SomeModel::class;
$dataMapper = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapper::class);
$tableName = $dataMapper->getDataMap($className)->getTableName();

查看来自this github repositorySqlDebuggerUtility,它使用DataMapper获取QueryResult对象的表名来调试SQL语句。

答案 1 :(得分:0)

在TYPO3 9.x上

您需要

$className = get_class($this);
$objectManager = GeneralUtility::makeInstance(ObjectManager::class);
$dataMapper = $objectManager->get(
    \TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapper::class
);
$tableName = $dataMapper->getDataMap($className)->getTableName();