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

如何从TYPO3 extbase中的模型类名中获取表名?,typo3,extbase,typo3-8.x,Typo3,Extbase,Typo3 8.x,从特定对象获取表名的最佳方法是什么? 是否有类似于: $tableName = Utility::doSomeMagic($object); 因此,您可以从Vendor\extkey\domain\model\myobject获取tx\u extkey\u domain\u model\myobject。您可以使用数据映射器获取模型的表名。存储库内部(至少间接地)使用它来告诉他们正在处理什么。您可以获得DataMapper的一个实例,并像这样使用它: $className = \MyVendo

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

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

因此,您可以从Vendor\extkey\domain\model\myobject获取tx\u extkey\u domain\u model\myobject。

您可以使用数据映射器获取模型的表名。存储库内部(至少间接地)使用它来告诉他们正在处理什么。您可以获得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();
查看来自的
SqlDebuggerUtility
,它使用DataMapper获取QueryResult对象的表名以调试SQL语句。

关于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();

谢谢你的更新!