【发布时间】:2019-01-26 20:44:08
【问题描述】:
我正在尝试获取具有关系和嵌套字段的用户模型。第一次尝试效果很好:
$user = \App\User::where('id', auth()->user()->id)->with(['userdoc'])->get();
它返回整个 userdoc 对象。但是我只想要两个字段,所以我正在尝试:
$user = \App\User::where('id', auth()->user()->id)->with(['userdoc:id,number'])->get();
这样它就会在toArray() JSON 中返回userdoc:null。
根据https://laravel.com/docs/5.5/eloquent-relationships#eager-loading 的文档,这似乎没问题
我在 Laravel 5.6 上。
添加更多信息:
没有特定字段获取整个对象
$user = \App\User::where('id', auth()->user()->id)->with('userdoc')->get();
return response()->json($user->toArray(), 200);
[
{
"id": 11,
"email": "xxxxx",
"slug": "xxxxx",
"created_at": "xxxxx",
"updated_at": "xxxxx",
"deleted_at": null,
"first_name": "xxxxx",
"last_name": "xxxxx",
"is_verified": 0,
"userdoc": {
"id": 11,
"created_at": "2018-08-20 13:20:29",
"updated_at": "2018-08-20 13:20:29",
"deleted_at": null,
"user_id": 11,
"type": "document",
"number": "xxxxxxxxx"
}
}
]
确定userdoc字段使对象变为null
$user = \App\User::where('id', auth()->user()->id)->with('userdoc:id,number')->get();
return response()->json($user->toArray(), 200);
[
{
"id": 11,
"email": "xxxxxxxxxxx",
"slug": "xxxxxxxxxxx",
"created_at": "xxxxxxxxxxx",
"updated_at": "xxxxxxxxxxx",
"deleted_at": null,
"first_name": "xxxxxxxxxxx",
"last_name": "xxxxxxxxxxx",
"is_verified": 0,
"userdoc": null
}
]
【问题讨论】: