php - 如何使用laravel从json中删除pivot关键字?

标签 php laravel laravel-5.6

我正在尝试从具有数据透视表user_gamesgames表中获取数据。下面的代码如果对我来说工作正常

$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 关键字,并将数据透视详细信息拉入根,如下我的愿望响应

{
    "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
        }
    ]
}

有人可以指导我如何解决这个问题吗?我将不胜感激。非常感谢

最佳答案

您可以在数据透视模型上利用hiddenappends来重新构造返回的数据。

class PivotModel extends model
{
    protected $hidden = ['pivot'];
    protected $appends = ['user_id'];

    public function getUserIdAttribute()
    {
        return $this->pivot->user_id;
    }
}

Reference for hidden

Reference for appends

关于php - 如何使用laravel从json中删除pivot关键字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53185514/

相关文章:

php - 在 PHP 中将非 ASCII 字符打印为十六进制

php - 客户端和服务器端验证

Laravel WebSockets : Subscribing to private channels does not work

php - 跟踪 Laravel 中注册用户和匿名用户的提交

vuejs2 - Vue JS每x秒触发一次方法/函数

php - 拉拉维尔 5.6 : Many-to-many relationship returns empty object

PHPUnit:模拟 Symfony2 FormBuilderInterface - 类型提示问题

javascript - 我如何将 javascript 变量传递给 codeigniter Controller 函数

laravel - 如何将数据传入 Artisan handle 命令 - Laravel 5.2

php - whereJsonContains Laravel 5.6 不工作?