2016-03-28 11 views
1

laravelにフォーラムを構築しています。私はそうのようにそのトピックで、各フォーラムのカテゴリを一覧表示したい:Laravelのトピックでフォーラムカテゴリを一覧表示する方法

Category 1 
    -Topic 1 
    -Topic 2 
    -Topic 2 
Category 2 
    -Topic 1 
    -Topic 2 
    -Topic 3 
But I am getting this in stead 
Category 1 
    -Topic 1 
Category 2 
    -Topic 1 

これは私のコントローラの私の選択クエリ

$this->categories = DB::table('forum_categories') 
     ->leftjoin('forum_topics','category_id','=','forum_categories.id') 
     ->leftjoin('forum_posts','topic_id','=','forum_topics.id') 
     ->orderby('category_name','ASC') 
     ->get(); 

これは

public function forum_post() 
    { 
    return $this->hasMany('App\Forum_topic','category_id'); 
    } 
私Forum_categoriesモデルであります

マイフォーラムタイプのモデル

public function post() 
    { 
     return $this->hasMany('App\Forum_post','id'); 
    } 
Forum_post model 
public function topic() 
    { 
     return $this->belongsTo('App\Forum_topic','id'); 
    } 

私は同様の結果で左結合を試みました。助けてください。

マイビュー

@foreach($categories as $category) 
<h2> {{$category->category_name}}</h2> 
-<p>{{$category->topic_subject}}</p> 
@endoforeach 

答えて

0

トピックは、実際にこのケースでbelongsToMany('App\Forum_topic', 'id');関係を持っている必要があります。

また、代わりにEloquentを使用してください。この場合、よりクリーンで強力なソリューションです。

  1. あなたのクラスでthusslyそれを宣言し、自分のテーブル名は、モデル名と一致しない場合は、あなたのModelsEloquent
  2. を拡張していることを確認してください: `保護$表=「my_tableに」;
  3. 今、あなたはそうのようにアクセスできるように、カテゴリーのクエリは、常に彼らの トピックへの接続が含まれていますprotected $with = ['topic'];

を追加します。

$category->topics 
+0

は返事をいただきありがとうございます。私はちょうど私のモデルの一部を投稿して申し訳ありません。私のすべてのモデルはEloquentに拡張されています。私のモデルとモデルが表す表は大丈夫です。 Forum_categoryモデルは、例えばforum_categoriesテーブルを指し示しています。Forum_postモデルで行った間違いを指摘してくれてありがとう。しかし、結果は同じです。各カテゴリの下には1つのトピックのみが表示されます。 – wafutech

+0

さて、あなたのデータが今のようになっていることは間違いありません。 – Ohgodwhy

+0

しかし、なぜですか。一部のカテゴリには複数のトピックがありますが、1つのみが表示されます。私は各カテゴリー内で別のforeachループを使用しようとしましたが、残念ながらこれはうまくいきませんでした。何かが間違っていますが、私は何を知っていません。 – wafutech

関連する問題