Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在TYPO3中的查询中获取不需要的where子句_Typo3_Typo3 8.x_Typo3 Extensions - Fatal编程技术网

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

在TYPO3中的查询中获取不需要的where子句,typo3,typo3-8.x,typo3-extensions,Typo3,Typo3 8.x,Typo3 Extensions,我正在编写一个查询,通过createQuery()获取记录。在检查SQL时,有一个where子句如下: WHERE(`sys\u category`.`pid`IN(47,0)) 这里的47是保存我的记录的sys\u文件夹ID,但问题是类别存储在另一个具有不同ID的文件夹中,因此它无法在sys\u category表中找到47ID。如何重写/修复此where子句 此外,是否需要将与我的记录关联的类别与记录放在同一文件夹中?如果是,原因是什么?您可以使用$defaultQuerySettings更

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

WHERE(`sys\u category`.`pid`IN(47,0))

这里的
47
是保存我的记录的
sys\u文件夹
ID,但问题是类别存储在另一个具有不同ID的文件夹中,因此它无法在
sys\u category
表中找到
47
ID。如何重写/修复此
where
子句


此外,是否需要将与我的记录关联的类别与记录放在同一文件夹中?如果是,原因是什么?

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

您可以在
实例化对象()
方法中设置它,并将其用于每个查询,也可以在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);

上下文中的
$this
是存储库吗?我应该在创建查询对象之前使用它吗?在createQuery方法中已经有这样一个赋值
if($this->defaultQuerySettings!==null){$query->setQuerySettings(clone$this->defaultQuerySettings);}
在执行查询之前,而不是在创建查询之前,您需要这个赋值。为了更好地阅读,我将把这段代码放在你的存储库方法的顶部。这个分配很奇怪,它阻止了对查询设置的任何更改。我强烈建议删除它。我像这样使用它
$query->setQuerySettings($querySettings)成功了。谢谢