我正在尝试使用包含à á ä
(加泰罗尼亚语)等重音的字段来查询寄存器。当我搜索'alex'时,它不会返回'Àlex'注册。
我正在使用laravel 5.5
,mysql 5.7
和PHP 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来区分重音和字符大小的情况下查询寄存器?
答案 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;这样在搜索和排序过程中就会完成重点剥离和案例折叠。