2017-06-15 9 views
0

私はフォーラムを作成しています。ユーザーがテーマをクリックすると、そのテーマに属するすべてのトピックがページに表示されます。問題は、私はこれをどのようにするのですか?Laravel foreachデータベースの問題

クリックしたそのテーマに属するトピックではなく、データベースからすべてのトピックを表示するループを作成しました。これどうやってするの?

Web.php

Route::get('/', '[email protected]')->name('home'); Route::get('/theme/{id}', '[email protected]')->name('showtheme');

ThemesController.php

私はここに必要な唯一の

public function show($id) 
{ 
    $topics = Topic::all($); 

    return view('themes/topics')->with('topics', $topics); 
} 

だと考えているので、私は唯一のshowメソッドを示し

トピック

@extends('layouts.default') 

@section('content') 
<div class="container main-content"> 
    <div class="row first-row"> 
     <div class="col s12"> 
      <div class="card"> 
       <div class="card-content clearfix"><a href="" class="btn blue-grey darken-4 right">Nieuw topic</a></div> 
      </div> 
     </div> 
     <div class="col s12"> 
      <div class="card"> 
       <div class="card-content"><span class="card-title"> - Topics</span> 
        <div class="collection"> 
         @foreach($topics as $topic) 
          <a href="" class="collection-item avatar collection-link"><img src="/uploads/avatars/{{ $topic->user->avatar }}" alt="" class="circle"> 
           <div class="row"> 
            <div class="col s6"> 
             <div class="row last-row"> 
              <div class="col s12"><span class="title">Theme - {{ $topic->topic_title }}</span> 
               <p>{!! str_limit($topic->topic_text, $limit = 100, $end = '...') !!}</p> 
              </div> 
             </div> 
             <div class="row last-row"> 
              <div class="col s12 post-timestamp">Gepost door: {{ $topic->user->username }} op: {{ $topic->created_at }}</div> 
             </div> 
            </div> 
            <div class="col s2"> 
             <h6 class="title center-align">Replies</h6> 
             <p class="center replies">{{ $topic->replies->count() }}</p> 
            </div> 
            <div class="col s2"> 
             <h6 class="title center-align">Status</h6> 
             <div class="status-wrapper center-align"><span class="status-badge status-open">open</span></div> 
            </div> 
            <div class="col s2"> 
             <h6 class="title center-align">Laatste reply</h6> 
             <p class="center-align">Naam</p> 
             <p class="center-align">Tijd</p> 
            </div> 
           </div> 
          </a> 
         @endforeach 
        </div> 
       </div> 
      </div> 
     </div> 

     <div class="col s12"> 
      <div class="card"> 
       <div class="card-content clearfix"><a href="" class="btn blue-grey darken-4 right">Nieuw topic</a></div> 
      </div> 
     </div> 
    </div> 
</div> 
@endsection 

.blade.php私は明らかに間違って何かをやっているが、私は何を見ることができないと信じています。 ヘルプをいただければ幸いです。あらかじめありがとうございます 私はいくつかのコードが恋しい場合は、お知らせください。

答えて

1

テーマとトピックの関係をどのように定義していますか?あなたは、あなたが正しく照会できるようにするために、あなたのデータベースに確立されているような何かを持っていなければならないでしょう。そんなことはまだありますか?

****編集****

public function show($id) 
{ 
    $topics = Theme::find($id)->topics; 
    return view('themes/topics')->with('topics', $topics); 
} 
+0

私は。テーマとトピックの関係は次のとおりです。 1.テーマはユーザーに属し、多くのトピックを持っています 2.トピックはユーザーに属し、テーマに属しますがトピックには多数の返信があります。 これは私が持っている関係です。 –

+0

その場合は、Auth :: user() - > topicsのような、ユーザーのトピックに直接アクセスして、必要なトピックを取得し、 - > with( 'topics'、Auth: :user() - > topics); – btl

+0

それは私が意味するものではないと私は信じています。ユーザーがテーマをクリックした場合。次のページはそのテーマのすべてのトピックを表示するforeachループである必要があります。私が正しいとすれば、あなたが提供したコードはそれを行うことができるとは思わない。 –