获取TYPO3 4.6.1版本中数据库表页面上的所有记录

3
我需要获取一个页面的所有记录,但是我需要它能够适用于用户当前所在的特定语言和工作区。
在传统的typo3中,我使用了类似以下的代码:
        $query = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows(
            '*',         // SELECT ...
            'tx_faqs_domain_model_faqsections',     // FROM ...
            'pid=' . (int) $pid . ' and deleted=0 and hidden=0 and sys_language_uid=' . $lang . ' AND t3ver_wsid = ' . (int) $workspace,    // WHERE...
            '',            // GROUP BY...
            'sorting',    // ORDER BY...
            ''            // LIMIT ...
        ); 
    foreach ($query as $key => $value) {
        $data[$key] = utf8_encode($value); 
    }            

然而,以下内容不适用于工作区,并且似乎也不符合新的flow3框架。
我看了一下如何做:
    $query = $this->createQuery();
    return $query->execute();

在我的Tx_Faqs_Domain_Repository_FaqSectionsRepository类中,但这会返回一个空数组。
从数据库表中获取特定页面、特定工作区、特定语言的所有记录的示例将是完美的。
1个回答

1
在您的存储库中添加一个方法,它可以为您进行过滤:
public function findAllFromPage(){
    $query = $this->createQuery();
    $query->getQuerySettings()->setRespectStoragePage(FALSE);

    $pid = intval($GLOBALS['TSFE']->id);
    $query->matching($query->equals('pid',$pid ));
    return $query->execute();
}

重要的部分是,你需要将respectStoragePage设置为false,否则它只会在你配置的存储页面中查找条目(这也是为什么像findByPid($GLOBALS['TSFE']->id);这样的魔术函数,在存储库类中本来就可用,不起作用的原因)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接