【发布时间】:2014-03-13 13:10:58
【问题描述】:
有几个非常相似的问题,但不是这个确切的问题。让我们从我的模型开始:
- 竞赛(hasMany
Event,belongsToManyPlayer) - 玩家(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 做我想做的事。有什么建议吗?
【问题讨论】:
-
在检索到 Eloquent 集合后,您必须进行一些后期处理。考虑循环和设置
$player->score = $player->pivot->score。