在 TYPO3 查询中获取不需要的 where 子句

Getting unwanted where clause in query in TYPO3

我正在编写查询以通过 createQuery() 获取记录。检查 SQL 后,有一个 where 子句,如下所示:

WHERE ( `sys_category`.`pid` IN ( 47, 0 ) )

这里 47 是保存我的记录的 sys_folder ID 但问题是类别存储在另一个具有不同 ID 的文件夹中,因此找不到 47 ID在sys_category table。我如何 override/fix 这个 where 子句?

此外,与我的记录相关联的类别是否必须与记录位于同一文件夹中?如果是,为什么?

您可以使用 $defaultQuerySettings 更改它搜索的 PID。

您可以在 instantiateObject() 方法中设置它,它将用于每个查询,或者您可以在 findBy 方法中设置它。

$querySettings = $this->objectManager->get(\TYPO3\CMS\Extbase\Persistence\Generic\Typo3QuerySettings::class);
// here you can search on all PIDs
$querySettings->setRespectStoragePage(false);
// here you can set special PIDs
$querySettings->setStoragePageIds([12, 15, 38]);

// Set the setting
$this->setDefaultQuerySettings($querySettings);