当 return 对象为 json 时访问 eloquent 关系
Access eloquent relationships when return object as json
我目前正在使用 Laravel/Lumen 构建 JSON RESTful API,现在正尝试访问存储在该模型关系中的模型属性
// I also want to return User->roles
return User::find(1)->first();
Returns:
{
"id": 2,
"email": '...'
}
我实际上找到了一种方法,但似乎被黑了很多而且不干净
// Get user
$user = User::find($id)->first();
// Make roles public
$user->roles = $user->roles;
// Return object
return $user;
Returns:
{
"id": 2,
"email": '...',
"roles": [
...
]
}
有没有更好的方法?还是您想保护数据的这种安全措施?但是既然你可以访问 php 中的关系,为什么不应该将它作为 json 对象返回?
无法在 laravel 文档中找到内容
您可以在您的关系中使用辅助函数 with
,例如:
user::find($id)->with('roles')->first()
试试这个:
$user = User::with('roles')->where('id', $id)->first();
最短的语法是:
User::with('roles')->find($id);
在这种情况下不需要使用first()
public function show(User $user) {
return $user->load('books');
}
我目前正在使用 Laravel/Lumen 构建 JSON RESTful API,现在正尝试访问存储在该模型关系中的模型属性
// I also want to return User->roles
return User::find(1)->first();
Returns:
{
"id": 2,
"email": '...'
}
我实际上找到了一种方法,但似乎被黑了很多而且不干净
// Get user
$user = User::find($id)->first();
// Make roles public
$user->roles = $user->roles;
// Return object
return $user;
Returns:
{
"id": 2,
"email": '...',
"roles": [
...
]
}
有没有更好的方法?还是您想保护数据的这种安全措施?但是既然你可以访问 php 中的关系,为什么不应该将它作为 json 对象返回?
无法在 laravel 文档中找到内容
您可以在您的关系中使用辅助函数 with
,例如:
user::find($id)->with('roles')->first()
试试这个:
$user = User::with('roles')->where('id', $id)->first();
最短的语法是:
User::with('roles')->find($id);
在这种情况下不需要使用first()
public function show(User $user) {
return $user->load('books');
}