如何遍历TYPO3 QueryInterface多维约束构建logicalAnd嵌套logicalOr
解决方案
你可以通过遍历$constraintsOr数组,为每个子数组生成对应的logicalOr条件,再将这些条件统一传入logicalAnd中,代码实现如下:
方法一:使用array_map快速转换
// 转换每个子数组为logicalOr条件 $andConditions = array_map(function($orConstraints) use ($query) { return $query->logicalOr(...$orConstraints); }, $constraintsOr); // 构建最终的查询条件 $query->matching($query->logicalAnd(...$andConditions));
方法二:使用foreach手动遍历(更直观)
如果需要更灵活的遍历控制,比如过滤特定键的元素,可以用foreach:
$andConditions = []; foreach ($constraintsOr as $orConstraints) { $andConditions[] = $query->logicalOr(...$orConstraints); } $query->matching($query->logicalAnd(...$andConditions));
两种方式都能实现你要的查询结构:每个$constraintsOr的子数组会被展开为logicalOr的参数,所有logicalOr条件再被logicalAnd包裹,最终传入matching方法。
内容的提问来源于stack exchange,提问作者Jacco van der Post
相关产品推荐
相关产品推荐

