将对象返回为 json 时访问雄辩的关系
Posted
技术标签:
【中文标题】将对象返回为 json 时访问雄辩的关系【英文标题】:Access eloquent relationships when return object as 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 文档中找不到东西
【问题讨论】:
【参考方案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();
【讨论】:
以上是关于将对象返回为 json 时访问雄辩的关系的主要内容,如果未能解决你的问题,请参考以下文章