随着$ GLOBALS ['TYPO3_DB']过时,我陷入了以下mm查询。
$dbObj = $GLOBALS['TYPO3_DB']->exec_SELECT_mm_query('distinct tx_news_domain_model_news.uid',
'sys_category',
'sys_category_record_mm',
'tx_news_domain_model_news',
' AND sys_category_record_mm.uid_local IN ( '.$catUid.' ) AND tx_news_domain_model_news.pid='.$pid.' AND sys_category_record_mm.tablenames="tx_news_domain_model_news"',
'',
'',
''
);
表明
在null上调用成员函数exec_SELECT_mm_query()
有人找到任何解决方案吗? 谢谢
答案 0 :(得分:0)
使用新的QueryBuilder并加入您的关系。
示例(未经测试的工作示例):
$table = 'tx_news_domain_model_news';
$joinTable = 'sys_category_record_mm';
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($table);
$statement = $queryBuilder
->select('*')
->from($table)
->leftJoin(
$table,
$joinTable,
'categoryMM',
$queryBuilder->expr()->eq(
'categoryMM.uid_foreign',
$queryBuilder->quoteIdentifier('tx_news_domain_model_news.uid')
)
)
->where(
$queryBuilder->expr()->eq('categoryMM.tablenames', $table),
$queryBuilder->expr()->eq('categoryMM.fieldname', 'categories'),
$queryBuilder->expr()->eq(
'categoryMM.uid',
$queryBuilder->createNamedParameter($catUid, \PDO::PARAM_INT)
)
)
->execute();