php - sql数据库中eloquent laravel中文支持

标签 php sql laravel utf-8 eloquent

如果我运行这个 Eloquent 查询 其中 $query 是 '语嫣'

$data = Model::select('driver_name')->where('driver_name', 'LIKE', "%{$query}%")->distinct('driver_name')->get();

返回零结果
但是当我使用下面的查询时

$data=DB::select("select driver_name from table_name where driver_name like N'%".$query."%' ");

返回两行

结论在字符串前面追加N时sql server能够读取中文字符串。
但是在我编写 Eloquent 查询的地方,一切都失败了。

我是否必须重写一切(在原始查询中)?或者我可以更改 sql 表设置(如整理)或 laravel(数据库连接) 设定还是用得体 Eloquent

下面是我的连接设置:-

 'sqlsrv' => [
            'driver' => 'sqlsrv',
            'host' => env('DB_HOST', 'localhost'),
            'port' => env('DB_PORT', '1433'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'charset' => 'UTF8',
            'prefix' => 'abc_',
        ],


任何帮助都会很棒

最佳答案

您应该为发送到您的数据库的查询设置一个日志并检查格式。

还要确保排序规则与您的数据库配置相匹配,并且是 'collat​​ion' => 'utf8mb4_unicode_ci', in cconfig/database.php

如果仍有问题,您仍然可以使用 whereRaw

$data = Model::select('driver_name')
    ->whereRaw("driver_name like N'%".$query."%'")
    ->distinct('driver_name')
    ->get();

关于php - sql数据库中eloquent laravel中文支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58875167/

相关文章:

javascript - 在 PHP Laravel 中将变量从 foreach 循环传递到我的 Controller

MySQL - 在集合查询中的 WHERE 之前有 AND 意味着什么?

php - 如何在 Laravel 5.3 中播种日期字段?

PHP 日期输出错误的月份

php - 是否可以在数据库中插入对象?

php - mysqli_fetch_assoc()需要参数/调用成员函数bind_param()错误。如何获取并修复实际的mysql错误?

php - DB : Table row with Onclick Modal with a row 中的 Foreach 条目

php - 将 sum() 结果存储在数据库中与在运行时计算

mysql - 将天数添加到日期列,然后检查它是否在两个日期之间 SQL

php - 如何使用基本查询在 Lumen/Laravel 中的 DB::insert 之后获取行 ID