Car*_*edo 2 typo3 typo3-extensions typo3-12.x
自 TYPO3 v12 以来,在存储库查询中使用约束不再像以前那样工作。
public function findByDate(
$dateFrom = null,
$dateTill = null,
$isAdmin = false,
$tags = [],
$keyword = ''
): QueryResultInterface
{
$query = $this->createQuery();
$query->getQuerySettings()->setIgnoreEnableFields(TRUE);
$query->getQuerySettings()->setEnableFieldsToBeIgnored(['starttime','endtime']);
$constraints = [];
if ($keyword != '') {
$constraints[] = $query->like('titel', '%'.$keyword.'%' );
}else{
if (isset($dateFrom) && isset($dateTill)) {
$constraints[] = $query->logicalAnd(
$query->lessThan('startdate', $dateTill->getTimestamp()),
$query->greaterThan('startdate', $dateFrom->getTimestamp()),
);
}
}
if (count($tags) > 0) {
$constraints[] = $query->logicalOr(
$query->in('tags.uid', $tags)
);
}
if ($isAdmin == false) {
$constraints[] = $query->equals('share', true);
}
$query->matching($query->logicalAnd($constraints));
return $query->execute();
}
Run Code Online (Sandbox Code Playgroud)
错误
TYPO3\CMS\Extbase\Persistence\Generic\Query::logicalAnd(): Argument #1 must be of type TYPO3\CMS\Extbase\Persistence\Generic\Qom\ConstraintInterface, array given
Run Code Online (Sandbox Code Playgroud)
约束的输出:
还有办法使用约束吗?
签名已更改。不要将约束数组放入逻辑And(),而是使用扩展运算符...。
代替
$query->matching($query->logicalAnd($constraints));
Run Code Online (Sandbox Code Playgroud)
和
$query->matching($query->logicalAnd(...array_values($constraints)));
Run Code Online (Sandbox Code Playgroud)
编辑1
添加了array_values()防护以避免使用较新的 PHP 版本进行关联密钥解包。
| 归档时间: |
|
| 查看次数: |
473 次 |
| 最近记录: |