从TYPO3 DB包装器到理论。选择声明

时间:2019-07-15 06:16:35

标签: php sql doctrine typo3

我必须使用QueryBuilder将一些代码从TYPO3 DB包装器迁移到Doctrine。我的数据库中有四个条目。

原始声明:

        $statementToMigrate = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows(
            'job_id,uid,pid,hash',
            'tx_test',
            'deleted = 0',
            null,
            null,
            null,
            'job_id'
        );

以及我的QueryBuilder版本:

        $table = 'tx_test';
        $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
            ->getQueryBuilderForTable($table);

        $sql = $queryBuilder
            ->select(
                "job_id,uid,pid,hash"
            )
            ->from($table)
            ->where(
                $queryBuilder->expr()->eq('deleted', 0)
            )
            ->execute()
            ->fetchAll();

原始陈述为我提供了全部四个条目。 新版本只有两个。区别在哪里? 以及如何在学说中设置“ $ uidIndexField =”?

解决方案: 我加了

            $queryBuilder
            ->getRestrictions()
            ->removeByType(StartTimeRestriction::class)
            ->removeByType(EndTimeRestriction::class);

现在可以了

1 个答案:

答案 0 :(得分:1)

嗨,Querybuilder考虑了常见的“限制”,例如开始/结束日期,语言,隐藏/删除。我想您的记录已被其他一些限制过滤掉了。

有关限制的更多信息,请参见此处:https://docs.typo3.org/m/typo3/reference-coreapi/master/en-us/ApiOverview/Database/RestrictionBuilder/Index.html#database-restriction-builder