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

Jon*_*nas 1 typo3 extbase typo3-8.x

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

$tableName = Utility::doSomeMagic($object);
Run Code Online (Sandbox Code Playgroud)

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

Kev*_*eid 5

您可以使用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();
Run Code Online (Sandbox Code Playgroud)

看看在SqlDebuggerUtility该github上存储库,它是使用DataMapper的获得QueryResult对象的表名调试SQL语句。