我在 Symfony 项目中使用 querybuilder 使用名字、姓氏、地址等多个参数来索引我的所有人员实体...
每个人最多可以有 3 个名字。我在表单中使用 select2 来允许用户在同一输入字段中写入多个名字。
一切正常,除了以下事实:如果我在字段中输入重音字符(例如 Rémy),我会收到以下错误:
[Syntax Error] line 0, col 730: Error: Expected end of string, got 'é'
我尝试了所有方法,但找不到错误,这是我的 PersonRepository 中管理名字参数的代码:
if (!empty($firstNames)) {
$orConditions = $qb->expr()->orX();
foreach ($firstNames as $firstName) {
$orConditions->add(
$qb->expr()->like('LOWER(ip.firstName)', ':firstName' . $firstName)
);
$qb->setParameter(':firstName' . $firstName, '%' . mb_strtolower($firstName, 'UTF-8') . '%');
}
$qb->andWhere($orConditions);
}
你们能帮我吗?
根据您的评论,我认为这应该可行。由于您的数组键与值相同,我们只需手动跟踪索引即可。
if (!empty($prenoms)) {
$orConditions = $qb->expr()->orX();
$idx = 0;
foreach ($prenoms as $prenom) {
$orConditions->add($qb->expr()->like('LOWER(ip.prenom)', ':prenom_'.$idx));
$qb->setParameter(':prenom_'.$idx, '%'.mb_strtolower($prenom, 'UTF-8').'%');
$idx++;
}
$qb->andWhere($orConditions);
}