获取db表typo3 4.6.1页面上的所有记录

时间:2012-03-12 14:27:57

标签: php typo3

我需要页面的所有记录,但我需要它来处理用户当前所在的特定语言和工作区。

在传统的拼写错误3中,我使用了类似的东西:

        $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类中,但这会返回一个空数组。

从db表中获取特定语言中特定语言的特定页面的所有记录的示例将是完美的。

1 个答案:

答案 0 :(得分: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,否则它只是在您配置的存储pid中查找条目(这也是为什么像findByPid($GLOBALS['TSFE']->id);这样的魔术函数可用的原因无论如何,在存储库类中,将无法工作)