当DB:raw和Pluck()或toArray()时,Laravel二进制字符串问题



所以当我使用get检索对象时,我得到了一个正常的结果

代码:

Contact::select(DB::raw("CONCAT(COALESCE(`name`,''),' ',COALESCE(`last_name`,'')) AS display_name"),'id','name','last_name')->where('id',2382)->get()

结果:

[
"display_name" => "OFNA • CASA "
"id" => 2382
"name" => "OFNA • CASA"
"last_name" => null
]

但是如果我做->pulk((或->toArray((我得到了这样的结果:

[
"display_name" => b"Ofna €¢ Casa "
"id" => 2382
"name" => "OFNA • CASA"
"last_name" => null
]

由于某种原因,display_name在转换为Array时编码不正确。有办法解决这个问题吗?还是拉拉威尔的问题?

感谢

我的Laravel版本是6.8

我做了一个变通办法,但我确信应该能解决这个问题

这是我的工作方法,绘制得到的地图,然后在地图后使用采集

get()->
map(function($object){
return [
'name'=>$object->name.' '.$object->last_name,
'id'=>$object->id
];
})->pluck('name','id');

它确实有效,但我相信应该有更好的方法,或者可能向Laravel报告。

希望有人对此更了解。

THanks

最新更新