2016-12-02 5 views
1

チーム '&' Match '、1コントローラー' MatchController '、ビュー' matches/index.blade 'という2つのモデルを作成しました。 php 'laravelのIDで私のビュー内の別のモデルから名前を表示するには

チームモデルのIDは&です。 MatchモデルのIDはhomeTeam_id & awayTeam_idです。 MatchControllerにはインデックスメソッドがあります。 ビューには、データベース内のすべての一致が正しく表示されますが、homeTeam_idでは、チームモデルのチーム名が表示されます。

どうすればよいですか?これは私が私の見解では、今持っているものです。

@foreach ($matches as $key => $value) 
    <tr> 
     <td>{{ $value->id }}</td> 
     <td>{{ $value->date }}</td> 
     <td>{{ $value->homeTeam_id }}</td> 
     <td>{{ $value->awayTeam_id }}</td> 
    </tr> 
@endforeach 

答えて

1

あなたがTeamMatchモデル間の2つの関係を作成することができます。

public function homeTeam() 
{ 
    return $this->belongsTo('App\Team', 'homeTeam_id', 'id'); 
} 

public function awayTeam() 
{ 
    return $this->belongsTo('App\Team', 'awayTeam_id', 'id'); 
} 

そしてデータをロード:

$matches = Match::with('homeTeam', 'awayTeam')->get(); 

表示するには、チーム名:

{{ $value->homeTeam->name }} 
+0

ありがとう、それは '$ matches = Match :: with( 'homeTeam'、 'awayTeam') - > get();'なしでも動作します。 私のコントローラは次のとおりです: 'public function index() { //すべての一致を取得 $ matches = Match :: all(); //ビューをロードして一致を渡す ビュー( 'matches.index')を返す - >( 'matches'、$ matches); } ' – Mwisho

+0

@Mwishoもしあなたが' with() 'を使わなければ、あなたのコードは複数のクエリを作成します。あなたはこの問題について読むことができます[ここ](https://laravel.com/docs/5.3/eloquent-relationships#eager-loading) –

+0

ああ!今、私は理解しています、ありがとうございました! – Mwisho

関連する問題