TYPO3版本9中的mm查询是什么

时间:2019-02-14 13:01:31

标签: typo3 typo3-9.x

随着$ 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()

有人找到任何解决方案吗? 谢谢

1 个答案:

答案 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();