【问题标题】:Laravel formatting JSON outputLaravel 格式化 JSON 输出
【发布时间】:2017-08-29 10:06:32
【问题描述】:

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

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

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

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

我不想使用 mutators,因为我只想在一个控制器中这样返回。我知道我可以使用 foreach 遍历对象并通过分配值来创建一个新对象,然后返回合并的对象。但是有没有更简单的方法来做到这一点?

【问题讨论】:

  • 是的。您能否添加一个使用 foreach 的示例?

标签: php json laravel laravel-5 eloquent


【解决方案1】:

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

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

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

return $result;

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

【讨论】:

    猜你喜欢
    • 2014-01-07
    • 1970-01-01
    • 2021-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多