2016-06-16 7 views
5

が、私は、記述1を思い付くことができませんでした。Laravel:JSONとピボットテーブルノン説明タイトルについては申し訳ありません

私は、次の3つのテーブル持っている: - ゲーム - プラットフォーム - games_platforms

をそして私は、プラットフォームとゲームの両方のために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'); 
} 

今これは魔法のように動作し、私はこのように、3つのテーブル内のすべての情報をJSON文字列を取得します。

[{ 
    "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で簡単な方法があります:私はこのような全体の「ピボット」情報、単に「RELEASE_DATE」を、表示したくありませんか?私の知る限り、今見ることができるように、他の記事を見て、配列にJSONを回す関数を記述するかのいずれかであり、私はそれを手配することができます。あるいは、私はLaravelにすべてのことをさせるのではなく、私自身のクエリを書くことができます。

は、あなたたちはこの問題で私を助けることができると思います。ありがとう!

+0

を私はLaravelは非常にcomprehensable構文で箱から出して積極的なロードをサポートしています知っています。私はピボットテーブルでこれを使用したことはありませんが、おそらく試してみてください。誰かがここでそれをやったと答えは助けるように見えます。http:// stackoverflowのhttps://laracasts.com/discuss/channels/eloquent/eager-loading-pivot-tablesはまた、この前の質問は非常にまともな答えを持っているようです。コム/質問/ 21645257 /発電クリーンフォーマット-JSON-と-laravel - ピボットテーブル?RQブリリアント= 1 – Loek

答えて

4

私はデータを修正するだろうが、コレクションクラスにメソッドを経由して、クエリから返される:

//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; 
    }); 
}); 
+0

、これは私が探していたものです。ありがとうございました。 – Serellyn

+0

@Serellynうれしい – Steve

0

私はこれが既に回答されて知っているが、私は正しい答えはあなたに非表示にしたいものは何でも追加することだろうと信じて隠し属性をモデルに追加します。

<?php 
class Games extends Eloquent 
{ 
    protected $hidden = ['pivot.game_id', 'pivot.platform_id']; 
} 

2つの例ではキーが異なるため、わかりません。 ご覧ください。https://github.com/laravel/framework/issues/745

関連する問題