在sql数据库中Eloquent laravel中文支持



如果我运行这个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."%' ");

两行返回

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

是否必须重写所有内容(在原始查询中(?或者我可以更改sql表设置(如排序规则(或laravel(数据库连接(设置并仍然使用正确雄辩

下面是我的连接设置:-

'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_',
],


任何帮助都是很棒的

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

还要确保排序规则与您的DB配置匹配,并且是cconfig/database.php中的'collation' => 'utf8mb4_unicode_ci',

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

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

最新更新