如果我运行这个 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_',
],
任何帮助都会很棒
最佳答案
您应该为发送到您的数据库的查询设置一个日志并检查格式。
还要确保排序规则与您的数据库配置相匹配,并且是 'collation' => '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/