duanlian1960 2017-04-04 09:28
浏览 302
已采纳

Laravel格式化JSON输出

Is there a simple way to return more objects with different attribute name in JSON response?

For example I have a User model which has attributes name, password, xy and if I do return User::all(); I will return all users. But what if I want to return a list of custom objects where I will return JSON format like:

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

so I will have name of fields returned differently then they are in DB, and also attach to each returned object an attribute from related model.

I don't want to use mutators as I only want to return like that within one controller. I know I can traverse through object with foreach and make a new object by assigning values, and returning merged object. But is there a simpler way to do this?

  • 写回答

1条回答 默认 最新

  • dongpu1315 2017-04-04 11:10
    关注

    You'll need to generate the list of objects to return manually.

    Example: if you wanted to return a custom object for each user fetched from the database you could do something like the following in your controller:

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

    Every time you return an array or a Collection from controller method, it will be converted automatically to JSON.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?