DB::table Select() 以字符串形式返回数组 Laravel
Posted
技术标签:
【中文标题】DB::table Select() 以字符串形式返回数组 Laravel【英文标题】:DB::table Select() returns Array as String Laravel 【发布时间】:2021-06-04 17:43:16 【问题描述】:我想根据距离获取用户列表,并在用户数据库中以 json 格式存储用户图像。当我使用DB::table
时,它以字符串而不是数组的形式返回。
请帮帮我。
我的控制器:
$doc = DB::table( 'users' )
->select(
'id',
'name',
'image',
'latitude',
'longitude' )
->selectRaw( "$getDistance AS distance" )
->orderBy( 'distance' )
->get();
当前 JSON 响应:
"name": "User One",
"image": "[\"f0f159c7238b8c9a1a3e5c9bd48de2a5cJ8Y4ssqzcuoWJAS1614581337EC2fGzmRCjf9wphI.webp\",
\"f0f159c7238b8c9a1a3e5c9bd48de2a5tvof9EarZgvupGpa1614581337zvPSnQchCjSL9lZS.webp\"]",
我想得到什么:
"name": "User One",
"image": ["f0f159c7238b8c9a1a3e5c9bd48de2a5cJ8Y4ssqzcuoWJAS1614581337EC2fGzmRCjf9wphI.webp",
"f0f159c7238b8c9a1a3e5c9bd48de2a5tvof9EarZgvupGpa1614581337zvPSnQchCjSL9lZS.webp"],
【问题讨论】:
如何在控制器中返回 json? 可能是因为距离,你只要这样做 $doc = DB::table( 'users' ) ->select( 'id', 'name', 'image', 'latitude' , 'longitude' ) ->get();然后检查你得到了什么 为什么不使用 Eloquent ORM 查询? 【参考方案1】:您可以在发送响应之前使用 Jsonencode 或 jsondecode。
我会使用$doc->image = json_encode($doc->image());
然后
return response()->json('data' => $doc);
【讨论】:
以上是关于DB::table Select() 以字符串形式返回数组 Laravel的主要内容,如果未能解决你的问题,请参考以下文章
如何在 DB::select(query) 上使用分页 - Laravel
为什么$ results = DB :: select有效而DB :: table不起作用?