在TYPO3中的查询中获取有害的where子句

时间:2018-07-31 09:17:51

标签: typo3 typo3-8.x typo3-extensions

我正在编写一个查询以通过 Which framework would you like to load? [Bootstrap]: [0] None [1] Bootstrap [2] Bulma [3] Foundation [4] Tachyons > 1 Are you sure you want to overwrite the following files? - scripts/autoload/_bootstrap.js - styles/autoload/_bootstrap.scss - styles/common/_variables.scss - styles/components/_comments.scss - styles/components/_forms.scss - styles/components/_wp-classes.scss - styles/layouts/_header.scss (yes/no) [no]: > yes Done. 获取记录。检查createQuery()后,会有一个SQL子句,如下所示:

where

这里WHERE ( `sys_category`.`pid` IN ( 47, 0 ) )是保存我的记录的47 ID,但问题是类别存储在另一个具有不同ID的文件夹中,因此找不到sys_folder ID在47表中。如何覆盖/修复此sys_category子句?

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

1 个答案:

答案 0 :(得分:0)

您可以使用$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);