Laravel如何将对象返回为没有键的JSON数组数据类型

Posted

技术标签:

【中文标题】Laravel如何将对象返回为没有键的JSON数组数据类型【英文标题】:Laravel how to return object into JSON Arrays data type without keys 【发布时间】:2020-08-25 15:45:42 【问题描述】:

我在控制器中有这样的数据库查询:

$query = User::all('id','name','email')->take(2);
$users = ["data" => $query];
return $users;

并得到结果:


  "data": [
    
      "id": 1,
      "name": "Peter",
      "email": "peter@peter.com"
    ,
    
      "id": 2,
      "name": "John",
      "email": "john@john.com"
    
  ]

但我希望得到没有像这样的键的 JSON 数组数据类型:


  "data": [
    [
      "1",
      "Peter",
      "peter@peter.com"
    ],
    [
      "2",
      "John",
      "john@john.com"
    ]
  ]

我需要为远程域的 DataTables JSONP 数据源获取此类型。

https://datatables.net/examples/server_side/jsonp.html

如何做到这一点?

谢谢。

【问题讨论】:

【参考方案1】:

你可以像这样尝试array_values

$query = User::all('id', 'name', 'email')->take(2);
$users = ["data" => $query->map(function (User $user) 
          return array_values($user->attributesToArray());
)];
return $users;

【讨论】:

好极了。现在我的“数据表服务器端处理”集成应该很容易了。竖起大拇指 Uzair Riaz。 很高兴我能帮上忙!【参考方案2】:

这样的事情怎么样?

$query = User::all('id', 'name', 'email')->take(2);

$userValues = $query->map(function($item, $key) 
  return [
    $item['id'],
    $item['name'],
    $item['email']
  ];  
)

$users = ["data" => $userValues];

return $users;
// result


  "data": [
     [
       1,
       "Amy Wilderman",
       "vrau@example.net",
     ],
     [
       2,
       "Bria Lindgren PhD",
       "trevor.armstrong@example.org",
     ],
   ]

【讨论】:

以上是关于Laravel如何将对象返回为没有键的JSON数组数据类型的主要内容,如果未能解决你的问题,请参考以下文章

如何使用改造获得没有对象键的 JSON 数组

在 Laravel 中将二维数组转换为 json 对象

如何使用 Laravel response()->json() 返回空对象而不是空数组

将对象对象转换为对象数组(PHP,Laravel)

如何将 laravel 模型工厂创建方法返回的对象转换为包含模型字段的数组?

将具有相同键的 JSON 对象合并在一起