2014-03-13 48 views
1

有几个非常类似的问题,但不是确切的事情。让我们先从我的模型:在Laravel中重新排列JSON输出

  • 比赛(的hasMany Event,belongsToMany Player
  • 球员(的hasMany Event,belongsToMany Contest,belongsToMany Event
  • 事件(属于关联Contest,belongsToMany Players->withPivot('score))(实际上称为ContestEventEvent是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部分是垃圾数据,除了eventsscore部分。我可以用$ hidden隐藏整个pivot部分,但我想要访问阵列之外的score值。

我搞砸了$appendgetFooAttribute(),但目前为止没有成功 - 我无法弄清楚如何让雄辩做我想做的事。有什么建议么?

+1

检索Eloquent集合后,您将不得不做一些后处理。按照循环和设置'$ player-> score = $ player-> pivot-> score'来思考。 –

回答

1

我发现Fractal,而不是重新排列我的模型,这使得创建自定义JSON输出完全按照你想要的方式很容易。