【发布时间】:2023-02-13 16:30:37
【问题描述】:
我为我的前端插件实现了一个简单的搜索栏。 现在我要搜索的文本是富文本,并且在数据库字段中包含 html 标签。
我发现通过这样一个简单的查询条件,我可以忽略 HTML 标签并正确过滤文本:
WHERE REGEXP_REPLACE(a.content, '<[^>]*>', '') LIKE '%my search word%'
但是,我没有找到让 Typo3 Querybuilder 和 Expressionbuilder 执行此类操作的选项。
我尝试像这样将 REGEXP_REPLACE 与 QueryBuilder 一起使用:
)->orWhere(
$queryBuilder->expr()->like(
$queryBuilder->expr()->literal("REGEXP_REPLACE(a.content, '<[^>]*>', '')", 0),
$queryBuilder->createNamedParameter('%' . $queryBuilder->escapeLikeWildcards($searchWord) . '%')
)
)
Typo3 生成的查询部分如下所示:
WHERE (`'REGEXP_REPLACE(a`.`content, \'<[^>]*>\', \'\')'` LIKE ?))
这会导致未知的列错误。
【问题讨论】:
-
我更愿意使用 $queryBuilder->add('where', 'REGEXP_REPLACE...LIKE...', true);
标签: mysql typo3 typo3-11.x