【问题标题】:DB::table Select() returns Array as String LaravelDB::table Select() 以字符串形式返回数组 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 查询?

标签: json laravel eloquent


【解决方案1】:

您可以在发送响应之前使用 Jsonencode 或 jsondecode。

我会使用$doc->image = json_encode($doc->image());

然后

return response()->json('data' => $doc);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-19
    • 1970-01-01
    • 2018-07-06
    • 2021-04-08
    • 2014-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多