返回对象为json时访问雄辩的关系

时间:2016-05-08 17:39:08

标签: php json laravel eloquent lumen

我目前正在使用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文档中找到一些内容

4 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:2)

最短的语法是:

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

在这种情况下,无需使用first()

答案 2 :(得分:1)

试试这个:

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

答案 3 :(得分:0)

public function show(User $user) {
        return $user->load('books');
}