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

thinkphp-where-字符串条件

为什么$ results = DB :: select有效而DB :: table不起作用?

我以元组形式获取 SELECT mysql 值。如何以字符串形式获取它?

laravel5.4DB::table的操作

sql中max排序字符串怎么排