2016-11-29 6 views
0

私はプレーヤーのためのシステムを作成します。
は、私は、次の3つのテーブルを持っている:Laravelテーブルとリレーションを作成する

matches: 
    - id 
    - win_points 
    - draw_points 
    - lose_points 

aways: 
    - id 
    - match_id 
    - user_id 
    - score 

homes: 
    - id 
    - match_id 
    - user_id 
    - score 

は今は関係を持ついくつかの問題を抱えています。
私はユーザーを得ることができます、彼の遠い家を取得しますが、私はマッチについての情報を得ることができません。

私はaway_matchとhome_matchのピボットテーブルについて考えていますが、それが良いアイディアかどうかはわかりません。

+1

あなたは、ピボットテーブルを必要としないあなたはすでにあなたが関係、すなわちA *ユーザー* 'hasManyの()'遠かっや家庭を作成するために使用できる外部キーを持っています。https:// laravel.com/docs/5.3/eloquent-relationships#one-to-many移行を構築する際に関係を定義することを忘れないでください: '$ table-> fo reign( 'user_id') - >参照( 'id') - > on( 'users'); '(詳細は* Schema Builder *のドキュメントを参照してください)。 – user2693053

答えて

1

ピボットは必要ありません。モデルにおける アウェイとホーム次の機能を追加することができます:アウェイ/ホームの試合を返します

public function match(){ 
    return $this->belongsTo(Match::class); 
} 

documentationとは異なり、ここではMatch ::クラスを使用しています。これはAppだけでなくApp \ Modelsに名前空間を設定した場合にのみ機能します。

$match = $user->homes->find($homeId)->match; 

(あなたが家庭や遠かっを得ることができ、ユーザーから言ったので、私はあなたがすでに同様の方法を実装すると仮定します。あなたは今、コードのこの作品との一致を得ることができ、ユーザから

ユーザーモデル

public function homes(){ 
    return $this->hasMany(Home::class); 
} 
+0

それは私にとって最高の答えです。すべてうまくいく。 –

+0

喜んで助けてくれました。 – Cashbee

0

matchplayersテーブルの間にMany to Many Relationshipを使用することができます。

あなたはこの方法であなたのDBの構造を検討することができます。

players 
    - id 
    - name 
    - ... 

matches 
    - id 
    - name 
    - ... 

match_player 
    - id 
    - player_id 
    - match_id 
    - match_type (either - home match or away match) 
    - win_points 
    - lose_points 
    - ... 

モデルとの関係は次のように次のようになります。

class Player extends Model 
{ 
    public function matches() 
    { 
     return $this->belongsToMany(Match::class, 'match_player') 
        ->withPivot(['match_type', 'win_points', 'lose_points']); 
    } 
} 

class Match extends Model 
{ 
    public function players() 
    { 
     return $this->belongsToMany(Player::class, 'match_player') 
        ->withPivot(['match_type', 'win_points', 'lose_points']); 
    } 
} 

・ホープ、このことができます!

関連する問題