sql - UidArray 的 TYPO3 9.5 Extbase 查询
问题描述
我有以下 SQL 查询
$uidArray = explode(",", $uids);
foreach ($uidArray as $uid) {
$dynamicUid[] = '`uid` LIKE \''.$uid.'\'';
}
$query = $this->createQuery();
$query->statement("SELECT * FROM `tx_myextension_domain_model_thi` WHERE ".implode($dynamicUid, " OR "));
return $query->execute();
这很好用,但我希望它是这样的:
$uidArray = explode(",", $uids);
$query = $this->createQuery();
foreach ($uidArray as $key => $value) {
$constraints[] = $query->equals('uid', $value);
}
return $query->matching(
$query->logicalAnd($constraints)
)->execute();
在这里,我使用查询解析器得到以下输出:
'SELECT `tx_myextension_domain_model_thi`.* FROM `tx_myextension_domain_model_thi`
`tx_myextension_domain_model_thi`
WHERE ((`tx_myextension_domain_model_thi`.`uid` = :dcValue1) AND
(`tx_myextension_domain_model_thi`.`uid` = :dcValue2)) AND
(`tx_myextension_domain_model_thi`.`sys_language_uid` IN (0, -1)) AND
(`tx_myextension_domain_model_thi`.`pid` = 0) AND
((`tx_myextension_domain_model_thi`.`deleted` = 0) AND (
`tx_myextension_domain_model_thi`.`t3ver_state` <= 0) AND
(`tx_myextension_domain_model_thi`.`pid` <> -1) AND
(`tx_myextension_domain_model_thi`.`hidden` = 0) AND
(`tx_myextension_domain_model_thi`.`starttime` <= 1607084460) AND
((`tx_myextension_domain_model_thi`.`endtime` = 0)
OR (`tx_myextension_domain_model_thi`.`endtime` > 1607084460)))'
并将 Uids 作为 dcValue-Array。
dcValue1 => '1' (1 chars)
dcValue2 => '2' (1 chars)
也许有人可以帮我重写这个,因为不幸的是我不能再进一步了!
谢谢 :)
解决方案
您是否尝试过 in 运算符?
public function yourFunctionName($uid)
{
$query = $this->createQuery();
$query->in('uid', $uidArray);
return $query->execute();
}
假设您的数组如下所示:
$uidArray = [
0 = '34',
1 = '15',
3 = '88'
]
编辑
如果您不关心对象的存储位置,则可以执行以下操作。
public function yourFunctionName($uid)
{
$query = $this->createQuery();
$query->getQuerySettings()->setRespectStoragePage(FALSE);
$query->matching(
$query->in('uid', $uidArray)
);
return $query->execute()];
}
这将忽略pid
查询中的
推荐阅读
- amazon-web-services - 当它们都是在 ECS Fargate 中的同一任务中运行的容器时,如何从我的 UI 向我的 API 发出请求
- javascript - 如何正确地将 WASM 集成到 Angular 服务中
- javascript - 从另一个对象数组创建对象数组
- javascript - 创建 React 应用程序 - 调试 - 导入未定义的变量
- amazon-web-services - Elastic Beanstalk 服务角色未授予附加策略的权限
- flutter - 无法在颤动中获得多个音频文件的持续时间
- xcode - Xcode 12.3 未下载或更新 Big Sur - 多次 Mac 重启
- neural-network - 将图外计算的损失分配给 Pytorch 模型
- r - 在 Lenovo Chromebook 上运行的 Debian 10(buster)上升级 R 时遇到问题
- firebase - Firestore:检查文档字段是否等于 SwiftUI 中的值