Laravel格式化JSON输出

时间:2017-04-04 09:28:58

标签: php json laravel laravel-5 eloquent

是否有一种简单的方法可以在JSON响应中返回具有不同属性名称的更多对象?

例如,我有User模型,其中包含name, password, xy属性,如果我return User::all();,我将返回所有用户。但是如果我想返回一个自定义对象列表,我将返回JSON格式,如下所示:

{
    'username' : ...
    'pass': ...
    'xyz' : ...
    'from_related_model' : ...
}

所以我将以不同的方式返回字段的名称,然后它们在DB中,并且还将来自相关模型的属性附加到每个返回的对象。

我不想使用mutators,因为我只想在一个控制器中返回。我知道我可以通过foreach遍历对象并通过赋值和创建一个新对象,并返回合并对象。但有更简单的方法吗?

1 个答案:

答案 0 :(得分:1)

您需要生成要手动返回的对象列表。

示例:如果您想为从数据库中提取的每个用户返回自定义对象,您可以在控制器中执行以下操作:

$result = [];
foreach (User::all() as $user) {
  $result[] = [
    'username' => $user->username,
    'full_name' => $user->first_name . ' ' . $user->last_name,
    'xyz' => 5,
  ];
}

return $result;

每次从控制器方法返回数组或集合时,它都会自动转换为JSON。