2017-03-15 2 views
1

うまくいけば、これは私の質問にいくつかのコンテキストを追加する必要があります。私は3つのモデルを持っています。モデルを別のモデルの裏側から取り外すことを熱望しますか?

マイビルドモデル:

public function buildComment(){ 
    return $this->hasMany('App\buildComment'); 
} 
public function buildQuestion(){ 
    return $this->belongsTo('App\buildQuestion'); 
} 

マイbuildQuestionモデル:

public function build(){ 
     return $this->hasMany('App\Build'); 
    } 

buildCommentsモデル:ここで

public function build(){ 
    return $this->belongsTo('App\Build'); 
} 

は私のコントローラである:

public function viewQuestion(buildQuestion $buildQuestion){ 
    $builds = Build::with('buildComment')->get(); 

    return view('pages.questionView',compact('buildQuestion', 'builds')); 
} 
私は、ビルドに属するコメントを取得しようとしています

@foreach($buildQuestion->build as $build) 
     <ul class="list-group"> 
      <li class="list-group-item clearfix active">Build suggestion by: {{$build->user->name}}</li> 
      <li class="list-group-item clearfix">Processor: <a href="/parts/cpu/{{$build->processor->id}}">{{$build->processor->name}}</a></li> 
      <li class="list-group-item clearfix">Graphics Card: <a href="/parts/gpu/{{$build->videoCard->id}}">{{$build->videoCard->name}}</a></li> 
      <li class="list-group-item clearfix">RAM: <a href="/parts/memory/{{$build->memory->id}}">{{$build->memory->name}}</a></li> 
      <li class="list-group-item clearfix">Motherboard: <a href="/parts/motherboard/{{$build->motherboard->id}}">{{$build->motherboard->name}}</a></li> 
      <li class="list-group-item clearfix">Power Supply: <a href="/parts/power-supply/{{$build->powerSupply->id}}">{{$build->powerSupply->name}}</a></li> 
      <li class="list-group-item clearfix">Storage: <a href="/parts/storage/{{$build->storage->id}}">{{$build->storage->name}}</a></li> 
      <li class="list-group-item clearfix">Optical Drive: <a href="/parts/optical-drive/{{$build->opticalDrive->id}}">{{$build->opticalDrive->name}}</a></li> 
      <li class="list-group-item clearfix"><strong>Build Total Price: £{{$build->processor->price + $build->videoCard->price + $build->memory->price + $build->motherboard->price + $build->powerSupply->price + $build->storage->price + $build->opticalDrive->price}}</strong></li> 
     </ul> 
     @foreach($build->buildComment as $comment) 
     {{$comment->body}} 
     @endforeach 
     <form action="/build-comment/post/{{$build->id}}" method="POST"> 
      <div class="form-group"> 
       <label for="body">Comment </label> 
       <textarea class="form-control" name="body"></textarea> 
      </div> 
      <input type="hidden" name="_token" value="{{ csrf_token() }}"> 
      <button type="submit" class="btn btn-primary">Submit</button> 
     </form> 
     @endforeach 

は、ここに私の見解です。

buildQuestionには多くのビルドがありますが、ビルドには多くのコメントがあります。

これを表現してビルドのコメントを取得するにはどうすればよいですか?

+0

'$ buildQuestion-> load([builds '、' builds.comments ']);' – Ohgodwhy

答えて

1

ネストされたeager loadingを使用して、それらをすべて1つのクエリで取得できます。あなたのビューで

//one buildquestion with all the builds & comments 
$buildQuestion = BuildQuestion::with('build.buildComment')->find(1); 

return view('pages.questionView',compact('buildQuestion')); 

、巣あなたのforeachの

@foreach($buildQuestion->build as $build) 
    //display stuff 

    @foreach($build->buildComment as $comment) 
     {{ $comment->body}} 
    @endforeach 
@endforeach 
+0

ありがとう、これは有望そうです!しかし、私はそれぞれのbuildQuestionsと別のページを持っています。それぞれのビルドに関する質問には、それらに関連するビルドが表示され、ビルドの下にはコメントが表示されます。あなたの答えは、すべてのコメントがビルドの下に表示されるようにします。私は関連ビルドのために表示されるコメントが必要です。これはfind()と関係があると思います。 – Rick

+1

その後、前のクエリで試してみてくださいが、二重foreachを維持してください。すべてのビルドをループし、すべてのコメントをループする必要があります。 – EddyTheDove

+0

作品、いい男!あなたが見たい場合に備えて私は更新します。 – Rick

0
@foreach($buildQuestion->build as $build) 
    <ul class="list-group"> 
     <li class="list-group-item clearfix active">Build suggestion by: {{$build->user->name}}</li> 
     <li class="list-group-item clearfix">Processor: <a href="/parts/cpu/{{$build->processor->id}}">{{$build->processor->name}}</a></li> 
     <li class="list-group-item clearfix">Graphics Card: <a href="/parts/gpu/{{$build->videoCard->id}}">{{$build->videoCard->name}}</a></li> 
     <li class="list-group-item clearfix">RAM: <a href="/parts/memory/{{$build->memory->id}}">{{$build->memory->name}}</a></li> 
     <li class="list-group-item clearfix">Motherboard: <a href="/parts/motherboard/{{$build->motherboard->id}}">{{$build->motherboard->name}}</a></li> 
     <li class="list-group-item clearfix">Power Supply: <a href="/parts/power-supply/{{$build->powerSupply->id}}">{{$build->powerSupply->name}}</a></li> 
     <li class="list-group-item clearfix">Storage: <a href="/parts/storage/{{$build->storage->id}}">{{$build->storage->name}}</a></li> 
     <li class="list-group-item clearfix">Optical Drive: <a href="/parts/optical-drive/{{$build->opticalDrive->id}}">{{$build->opticalDrive->name}}</a></li> 
     <li class="list-group-item clearfix"><strong>Build Total Price: £{{$build->processor->price + $build->videoCard->price + $build->memory->price + $build->motherboard->price + $build->powerSupply->price + $build->storage->price + $build->opticalDrive->price}}</strong></li> 
    </ul> 
    @foreach($build->buildComment as $comment) 
    {{$comment->body}} 
    @endforeach 
    <form action="/build-comment/post/{{$build->id}}" method="POST"> 
     <div class="form-group"> 
      <label for="body">Comment </label> 
      <textarea class="form-control" name="body"></textarea> 
     </div> 
     <input type="hidden" name="_token" value="{{ csrf_token() }}"> 
     <button type="submit" class="btn btn-primary">Submit</button> 
    </form> 
    @endforeach 

@EddyTheDoveこの変更を行うことを示唆し、それが働いた後、私は別のforeachを入れ子になりました。

関連する問題