我需要为TYPO3扩展构建一些复杂的查询。其中一个查询是在给定用户的集合或默认条目集中查找自定义条目。默认条目随cruser_id = 0
一起保存。因此,构建嵌套逻辑运算符是必要的。
我尝试了如下:
public function findById($cId, $userId) {
$query = $this->createQuery();
$query->getQuerySettings()->setEnableFieldsToBeIgnored(['pid', 'cruser_id', 'sys_language_uid']);
$res = $query->matching(
$query->logicalAnd(
$query->equals("id", $cId),
$query->logicalOr(
$query->equals("cruser_id", $userId), //include custom entries
$query->equals("cruser_id", 0) //also include default entries
)
))->execute()->getFirst();
print_r($res);
这不起作用:-(我试图调试,但我发现我的代码中没有错误迹象。如果有人可以帮助我,那就太好了。
答案 0 :(得分:2)
总结评论:
如果您的记录不在配置的persistence-pid plugin.tx_yourext.persistence.storagePid
中,或者您根本没有配置持久性存储,那么您需要禁用pid-checks。
setEnableFieldsToBeIgnored
只能应用于所谓的 enable-fields ,在大多数情况下,已禁用,endtime,fe_group,starttime 并通过{{ 1}}。
要禁止 pid - 检查,您应该使用$GLOBALS['TCA'][$table]['ctrl']['enablecolumns']
。对于 sys_language ,有一个setRespectStoragePage(false)
。 cruser_id 根本没有检查过,所以你可以跳过它。