对于非解释性标题,我感到抱歉,但我想不出一个描述性的标题。
我有以下 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/