我使用mariadb 10.0.32进行laravel 5.5设置。 数据库编码utf8mb4(utf8mb4_unicode_ci)。
以及这段代码:
$letter = "К";
$countries = DB::table('country_translations')->where([
['name', 'like', $letter . "%"],
['locale', '=', "ru"]
])->get();
其中$letter
是西里尔字母К
。
如果我输出数据库日志,则会显示:
Array
(
[0] => Array
(
[query] => select * from `country_translations` where (`name` like ? and `locale` = ?)
[bindings] => Array
(
[0] => �%
[1] => ru
)
[time] => 2.07
)
)
正如你所看到的,Laravel以某种方式混淆了编码。并且由于此查询返回零条目。
有人可以为这个问题提出解决方案吗?
更新 配置/ databese.php:
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],