【问题标题】:Access eloquent relationships when return object as json将对象返回为 json 时访问雄辩的关系
【发布时间】:2016-09-03 07:49:03
【问题描述】:

我目前正在使用 Laravel/Lumen 构建 JSON RESTful API,现在尝试访问存储在此模型关系中的模型属性

// I also want to return User->roles
return User::find(1)->first();

返回:

{
  "id": 2,
  "email": '...'
}

我实际上找到了一种方法,但它似乎被黑了而且不干净

    // Get user
    $user = User::find($id)->first();

    // Make roles public
    $user->roles = $user->roles;

    // Return object
    return $user;

返回:

{
  "id": 2,
  "email": '...',
  "roles": [
  ...
  ]
}

有没有更好的方法?还是您想保护数据的这种安全性?但是既然你可以在 php 中访问关系,为什么不应该将它作为 json 对象返回呢?

在 laravel 文档中找不到东西

【问题讨论】:

    标签: php json laravel eloquent lumen


    【解决方案1】:
    public function show(User $user) {
            return $user->load('books');
    }
    

    【讨论】:

      【解决方案2】:

      最短的语法是:

      User::with('roles')->find($id);
      

      在这种情况下不需要使用first()

      【讨论】:

        【解决方案3】:

        您可以在您的关系中使用帮助函数with,如下所示:

        user::find($id)->with('roles')->first()
        

        【讨论】:

        • 我在文档中错过了这个吗?第一次看到,谢谢!
        • @Flyde 取决于您使用的版本,它就在这里:laravel.com/docs/5.1/helpers#method-with 祝您有美好的一天! :-)
        • 如果你想在所有查询中使用 with,你可以在 UserModel.class 中填写属性 $with。 |受保护的 $with = ['roles'];
        【解决方案4】:

        试试这个:

        $user = User::with('roles')->where('id',  $id)->first();
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-04-10
          • 2020-12-13
          • 2018-04-11
          • 2017-07-29
          • 2015-12-17
          • 2020-09-08
          • 2018-06-19
          • 1970-01-01
          相关资源
          最近更新 更多