我试图从games
表中获取数据,该表具有透视表user_games
。下面的代码对我来说很好
$UserGames = User::with(['games' => function ($query){
$query->withPivot('highscore','level');
}])->find(request()->user()->id);
我正在获取以下JSON响应
{
"data": [
{
"id": 2,
"name": "culpa",
"type_id": 3,
"created_at": "2018-10-30 11:23:27",
"updated_at": "2018-10-30 11:23:27",
"pivot": {
"user_id": 2,
"game_id": 2,
"highscore": 702,
"level": 3
}
}
]
}
但我想从上面的json中删除pivot
关键字,并将pivot详细信息拉到根中,就像下面我的愿望响应一样
{
"data": [
{
"id": 2,
"name": "culpa",
"type_id": 3,
"created_at": "2018-10-30 11:23:27",
"updated_at": "2018-10-30 11:23:27",
"user_id": 2,
"highscore": 702,
"level": 3
}
]
}
有没有人能好心地指导我如何解决这个问题。我将不胜感激。非常感谢
4条答案
按热度按时间rjzwgtxy1#
您可以在pivot模型上使用
hidden
和appends
来重新构造返回的数据。隐藏的参考
wnavrhmk2#
您可以将JSON转换为数组,而不是将其重新转换为JSON。
kkih6yb83#
你可以覆盖
User
模型的jsonSerialize
方法,它在toJson
方法中被调用,这是初始方法体:你可以这样做:
sd2nnvve4#
我强烈建议使用API资源来修改响应层。
对于此问题,请使用
php artisan make:resource UserGameResource
创建API资源最后使用这个API资源返回你的查询结果: