2016-12-17 14 views
0

最初はさまざまなものを試しましたが、結果が得られていないようです。Laravel - 複数の外部キーとIDの取得

コントローラー:

public function all() 
{ 
    $projects = Project::all(); 

    foreach($projects as $project) { 
     $pid = $project->id; 
    } 

    $am = DB::table('projects') 
     ->join('employees', 'projects.am_id', '=', 'employees.id') 
     ->where('projects.id', '=', $pid) 
     ->select('projects.id', 'projects.am_id', 'employees.name') 
     ->first(); 

    $pm = DB::table('projects') 
     ->join('employees', 'projects.pm_id', '=', 'employees.id') 
     ->where('projects.id', '=', $pid) 
     ->select('projects.id', 'projects.pm_id', 'employees.name') 
     ->first(); 

    return view('projects/all', [ 
     'projects' => $projects, 'am' => $am, 'pm' => $pm 
     ]); 
} 

ビュー:

<h1 class="text-center">All Projects</h1> 
      @foreach ($projects as $project) 
       <div class="row"> 
       <div class="col-md-6 text-center"> 
       <h3><a href="">{{ $project->company }}</a></h3> 
       </div> 
       <div class="col-md-6 text-center"> 
       <p>Account Manager: {{ $am->name }}</p> 
       <p>Project Manager: {{ $pm->name }}</p> 
       </div> 
       </div> 
       <hr> 
      @endforeach 

だから私は、プロジェクトごとに会社名やプロジェクトマネージャーとアカウントマネージャーを表示したいです。私が見ているのは、すべてのプロジェクトで同じ人物です。それは各プロジェクトの正しいマネージャーを拾いません。

コントローラでforループを実行してプロジェクトIDを取得し、where句に渡しましたが、動作しませんでした。

これを修正する方法はありますか?

ありがとうございます!

答えて

1

$ amと$ pmのクエリは、foreachループ内にありません。だから、唯一の

<h1 class="text-center">All Projects</h1> 
@foreach ($projects as $project) 
    <div class="row"> 
     <div class="col-md-6 text-center"> 
      <h3><a href="">{{ $project->company }}</a></h3> 
     </div> 
     <div class="col-md-6 text-center"> 
      <p>Account Manager: {{ $project->am->name }}</p> 
      <p>Project Manager: {{ $project->pm->name }}</p> 
     </div> 
    </div> 
<hr> 
@endforeach 
+0

はあなたにRavishaありがとう($ pidの)

public function all() { $projects = Project::all(); foreach($projects as $project) { $pid = $project->id; $am = DB::table('projects') ->join('employees', 'projects.am_id', '=', 'employees.id') ->where('projects.id', '=', $pid) ->select('projects.id', 'projects.am_id', 'employees.name') ->first(); $pm = DB::table('projects') ->join('employees', 'projects.pm_id', '=', 'employees.id') ->where('projects.id', '=', $pid) ->select('projects.id', 'projects.pm_id', 'employees.name') ->first(); $project->am = $am; $project->pm = $pm; } return view('projects/all', [ 'projects' => $projects ]); } 

ビュー最後のプロジェクトのための$午前と午後$値を取得します!私の愚かな間違い。 – robk27