I have a laravel 5.5 setup with mariadb 10.0.32. Database encoding utf8mb4 (utf8mb4_unicode_ci).
and this snippet of code:
$letter = "К";
$countries = DB::table('country_translations')->where([
['name', 'like', $letter . "%"],
['locale', '=', "ru"]
])->get();
where $letter
is cyrillic letter К
.
If I output DB log it shows this:
Array
(
[0] => Array
(
[query] => select * from `country_translations` where (`name` like ? and `locale` = ?)
[bindings] => Array
(
[0] => �%
[1] => ru
)
[time] => 2.07
)
)
As you can see, Laravel somehow messes up encoding. And because of this query returns zero entries.
Can anybody suggest a solution for this problem?
Update config/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,
],