首页 > 解决方案 > TYPO3:在 Doctrine where 子句中使用 BINARY 进行区分大小写的搜索

问题描述

我目前正在将旧的 TYPO3 应用程序从$GLOBALS['TYPO3_DB']Doctrine 迁移。

在旧应用程序中,使用 BINARY 运算符进行区分大小写的搜索:

$whereClause = 'BINARY myfieldname LIKE "%' . $query . '%"';

我试图像这样迁移它:

$queryBuilder->expr()->like('BINARY myfieldname', $queryBuilder->createNamedParameter('%' . $queryBuilder->escapeLikeWildcards($query) . '%'))

另一种尝试是这样的:

$queryBuilder->expr()->like('BINARY `myfieldname`', $queryBuilder->createNamedParameter('%' . $queryBuilder->escapeLikeWildcards($query) . '%'))

这总是以错误消息结束: Unknown column 'BINARY `label`' in 'where clause'

不幸的是,无法更改 MySQL 服务器设置中的任何内容。

我发现了这个问题,但它对我没有帮助。

还有其他想法吗?

标签: phpdoctrinetypo3typo3-9.x

解决方案


这个解决方案对我有用(感谢 Thomas 的提示):

$whereClause = $queryBuilder->expr()->like(
  'label',
  $queryBuilder->createNamedParameter('%' . $queryBuilder->escapeLikeWildcards($query) . '%')
);
$whereClause = 'BINARY ' . $whereClause;
$queryBuilder->add('where', $whereClause);

推荐阅读