Laravel DB绑定编码

时间:2017-11-10 10:09:01

标签: database laravel encoding

我使用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,
    ],

0 个答案:

没有答案