【发布时间】:2020-12-03 14:42:41
【问题描述】:
我有以下 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)))'
而 Uid 为 dcValue-Array。
dcValue1 => '1' (1 chars)
dcValue2 => '2' (1 chars)
也许有人可以帮我重写这个,因为不幸的是我不能再进一步了!
谢谢:)
【问题讨论】:
-
你执行的结果是什么?
-
@AristeidisKaravas 没有语句的结果是空的 -> 我使用查询解析器得到以下信息(请参阅已编辑的问题,因为它对于评论部分来说太多了!
-
您的对象存储在哪个页面 ID 中?看起来查询搜索了 pid 0。您使用的是哪个 TYPO3 版本?
标签: sql repository extbase typo3-9.x