получить все записи на странице таблицы базы данных typo3 4.6.1 - PullRequest
3 голосов
/ 12 марта 2012

Мне нужны все записи для страницы, но мне нужно, чтобы она работала для определенного языка и рабочей области, в которой находится пользователь.

В традиционном 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 голос
/ 13 марта 2012

Добавьте метод в ваш репозиторий, который выполняет фильтрацию для вас:

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);, доступна в классе репозитория). во всяком случае, не будет работать)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...