忽略重音字符Eloquent查询

时间:2018-02-09 09:45:59

标签: php mysql laravel character-encoding eloquent

我正在尝试使用包含à á ä(加泰罗尼亚语)等重音的字段来查询寄存器。当我搜索'alex'时,它不会返回'Àlex'注册。

我正在使用laravel 5.5mysql 5.7PHP 7.0

搜索代码:

$client = new Client();
$client = $client->newQuery();

if ($request->has('name') && !empty($name = $request->input('name'))) 
{
    $client->where('name', 'LIKE', "%$name%");
}

return $client->get();

如何在不使用Eloquent和Laravel来区分重音和字符大小的情况下查询寄存器?

3 个答案:

答案 0 :(得分:1)

要进行重音不敏感搜索,您可以在原始SQL查询中更改运行时的collation

<强>尝试:

$client->whereRaw("name like  '%$name%' collate utf8_general_ci ");

答案 1 :(得分:0)

问题是测试的配置。我使用 sqlite 而不是mysql。谢谢你的回答。 mysql的laravel的默认配置有效:

<强> config/database.php

'mysql' => [
    ...
    'charset' => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci',
    ...
]

答案 2 :(得分:0)

SHOW CREATE TABLE。你可能会发现COLLATION ..._bin。改变&#34; bin&#34;到&#34; general_ci&#34;这样在搜索和排序过程中就会完成重点剥离和案例折叠。