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



从特定对象获取表名的最佳方法是什么? 有没有像这样的东西:

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

以便您从供应商\Extkey\Domain\Model\MyObject获得tx_extkey_domain_model_myobject。

可以使用数据映射器获取模型的表名。存储库在内部使用它(至少间接地(来告诉他们正在处理什么。您可以为自己获取一个 DataMapper 的实例,并像这样使用它:

$className = MyVendorMyExtDomainModelSomeModel::class;
$dataMapper = TYPO3CMSCoreUtilityGeneralUtility::makeInstance(TYPO3CMSExtbasePersistenceGenericMapperDataMapper::class);
$tableName = $dataMapper->getDataMap($className)->getTableName();

看看这个 github 存储库中的SqlDebuggerUtility,它使用 DataMapper 获取 QueryResult 对象的表名来调试 SQL 语句。

在 TYPO3 9.x 上

你需要

$className = get_class($this);
$objectManager = GeneralUtility::makeInstance(ObjectManager::class);
$dataMapper = $objectManager->get(
TYPO3CMSExtbasePersistenceGenericMapperDataMapper::class
);
$tableName = $dataMapper->getDataMap($className)->getTableName();

最新更新