如果我运行这个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();