php - Laravel:JSON 和数据透视表

标签 php json laravel eloquent lumen

对于非解释性标题,我感到抱歉,但我想不出一个描述性的标题。

我有以下 3 个表: - 游戏 - 平台 - 游戏平台

我在 Laravel 中有 2 个模型用于平台和游戏。

public function games() 
{
    return $this->belongsToMany('App\Game', 'games_platforms')->withPivot('release_date');
}

public function platforms() 
{
    return $this->belongsToMany('App\Platform', 'games_platforms')->withPivot('release_date');
}

现在这很有用,我得到了一个 JSON 字符串,其中包含 3 个表中的所有信息,就像这样。

[{
    "id": 1,
    "name": "Borderlands",
    "short_description": "",
    "created_at": null,
    "updated_at": null,
    "platforms": [{
        "id": 4,
        "name": "PC",
        "pivot": {
            "game_id": 1,
            "platform_id": 4,
            "release_date": "2016-03-03"
        }
    }]
}]

现在我的问题如下。我不想显示整个“枢轴”信息,只显示“发布日期”,如下所示:

"platforms": [{
        "id": 4,
        "name": "PC",
        "release_date": "2016-03-03"

在 Laravel 中有没有简单的方法来做这样的事情?据我现在所见,查看其他帖子,要么编写一个将 json 转换为数组的函数,然后我可以对其进行排列。或者我可以编写自己的查询,而不是让 Laravel 做所有这些。

希望大家能帮我解决这个问题。谢谢!

最佳答案

我会通过集合类的方法修改查询返回的数据:

//replace Game::all() with your actual query
return Game::all()->each(function($game){
    $game->platforms->map(function($platform){
        $platform->release_date = $platform->pivot->release_date;
        unset($platform->pivot);
        return $platform;
    });
});

关于php - Laravel:JSON 和数据透视表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37861625/

相关文章:

php - 使用 null 选择具有值的列

laravel - 如何在 Laravel 中断言 ResourceCollection 的实例?

angularjs - Angular 中的 CSRF token 与 Laravel 5 不同

php - 用于计算引号中 '?' 实例的正则表达式

php - 单步调试 PHP 会改变 MySQL 结果

php - 从函数调用 PDO

javascript - 如何提取嵌套的多级 JSON 对象/数组的部分并使用 JavaScript 将其展平

java - 我在哪里可以在 Spring 3.1 中指定 Jackson SerializationConfig.Feature 设置

java - Jackson 中的序列化数组类型和数组

php - Laravel-多种形式的错误