从特定对象获取表名的最佳方法是什么? 有没有像这样的东西:
$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();