有几个非常相似的问题,但不是这个问题 . 让我们从我的模型开始:
-
比赛(hasMany
Event
,belongsToManyPlayer
) -
Player(hasMany
Event
,belongsToManyContest
,belongsToManyEvent
) -
事件(belongsTo
Contest
,belongsToManyPlayers->withPivot('score)
)(实际上称为ContestEvent
,因为Event
是一个Laravel类)
我正在编写一个API来处理数据的其他内容 . 现在我从给定的比赛中得到这个输出:
{
"id": "1",
"owner_id": "1",
"name": "Some Contest",
"start_date": "2013-08-09",
"end_date": "2013-08-31",
"is_public": "1",
"is_finished": "0",
"players": [
{
"id": "1",
"first_name": "Bob",
"last_name": "Smith",
"initial_name": "Bob S",
"pivot": {
"contest_id": "1",
"user_id": "1"
}
}
],
"events": [
{
"id": "1",
"name": "Stage 1",
"date": "2013-08-01",
"players": [
{
"id": "1",
"first_name": "Bob",
"last_name": "Smith",
"initial_name": "Bob S",
"pivot": {
"contest_event_id": "1",
"user_id": "1",
"score": "5"
}
}
]
}
]
}
pivot
部分是垃圾数据,但 events
下的 score
部分除外 . 我可以使用$ hidden隐藏整个 pivot
部分,但我希望在 pivot
数组之外的一步中访问 score
值 .
我已经弄乱了 $append
和 getFooAttribute()
,但到目前为止没有成功 - 我无法弄清楚如何让Eloquent做我想做的事 . 有什么建议?
1 回答
我没有重新安排我的模型,而是发现了Fractal,这使得创建自定义JSON输出的方式非常简单 .