【问题标题】:Return Eloquent model with different name from database tables从数据库表中返回具有不同名称的 Eloquent 模型
【发布时间】:2013-06-14 16:53:46
【问题描述】:

我想返回 Eloquent 模型的 JSON,但我想更改数组键。默认情况下,它们被设置为表字段名称,但我想更改它们。

例如,如果我有一个包含两个字段的 users 表:id 和 user_name

当我返回 User::all();我将有一个带有 "[{"id" => 1, "user_name" => "bob}] 等的 JSON。

我希望能够将 user_name 更改为用户名。如果模型上没有丑陋的 foreach 循环,我还没有找到方法。

【问题讨论】:

  • 您为什么要这样做?为什么不在整个应用程序中保持名称统一..

标签: laravel laravel-4


【解决方案1】:

我不知道你为什么要首先这样做,如果你的应用程序/最好在整个过程中保持统一,我会首先警告你结构。但如果你真的 想这样做.. 你可以这样做:

$user = User::find($id);
return Response::json(array('id' => $user->id, 'username' => $user->user_name));

这将返回一个您想要的 JSON 对象。

您还可以使用以下命令更改密钥的名称:

$arr[$newkey] = $arr[$oldkey];
unset($arr[$oldkey]);

【讨论】:

    【解决方案2】:

    看看 robclancy 的 presenter 包,这个 ServiceProvider 处理你想要实现的那些事情。

    GITHUB LINK

    【讨论】:

      【解决方案3】:

      只需将模型的 $hidden 静态设置为要隐藏的键即可:

      类用户扩展 Eloquent { 公共静态 $hidden = 'id';

      }

      并使用 get 和 set 函数以您喜欢的方式命名它们。

      【讨论】:

        猜你喜欢
        • 2014-12-28
        • 1970-01-01
        • 1970-01-01
        • 2015-11-28
        • 2012-07-25
        • 2017-06-01
        • 2023-04-06
        • 2019-05-09
        • 2018-10-24
        相关资源
        最近更新 更多