2016-09-19 13 views
0

私はLaravel Eloquentにいくつかの問題があり、あなたの助けが必要です。 私は表示したい1つのコメントの各コメントの1つの返信。ここで Laravel miltiple limit relationship with()

は私のテーブル

ある
posts (id,title) 
id | title 
--------------------- 
1 | My post 
--------------------- 

comments(id,post_id,comment,parent_id) 
id | post_id | comment   | parent_id 
----------------------------------------- 
1 | 1  | First comment | null 
----------------------------------------- 
2 | 1  | Second comment | null 
----------------------------------------- 
3 | null | 3rd comment  | 1 
----------------------------------------- 
4 | null | 4th comment  | 1 
----------------------------------------- 
5 | null | 5th comment  | 2 
----------------------------------------- 
6 | null | 6th comment  | 2 
----------------------------------------- 

マイモデル(雄弁)

class Post extends Model 
{ 
    public function comments() 
    { 
     return $this->hasMany('Comment', 'post_id'); 
    } 
} 
--------------------- 
class Comment extends Model 
{ 
    public function reply() 
    { 
     return $this->hasMany('Comment', 'parent_id');//self relationship 
    } 
} 

私のクエリ機能

public function getPost($postId){ 
    $posts = Post::with(['comment.reply'=>function($q){ 
     $q->limit(1); 
    }]) 
    ->find($postId); 

    return $posts; 
} 

そして、私は結果を得る

{[ 
    id=>1, 
    title=>'My post', 
    'comments'=>[ 
     0=>[ 
     id=>1, 
     comment=>'First comment', 
     parent_id=>null, 
     post_id=>1, 
     reply=>[ 
      0=>[........(comment id:3).......] 
     ] 
     ], 
     1=>[ 
     id=>2, 
     comment=>'Second comment', 
     parent_id=>null, 
     post_id=>1, 
     reply=>null 
     ] 
    ] 
]} 

しかし、私は親切に助けてください、この

{[ 
     id=>1, 
     title=>'My post', 
     'comments'=>[ 
      0=>[ 
      id=>1, 
      comment=>'First comment', 
      parent_id=>null, 
      post_id=>1, 
      reply=>[ 
       0=>[........(comment id:3,4)........] 
      ] 
      ], 
      1=>[ 
      id=>2, 
      comment=>'Second comment', 
      parent_id=>null, 
      post_id=>1, 
      reply=>[ 
       0=>[........(comment id: 5,6).........] 
      ] 
      ] 
     ] 
    ]} 

ようにしたいです!

答えて

0

これを試してください:あなたの返信用

$posts=Post::where(['id'=>1])->with(['comments'=>function($query) 
       { 
        $query->with(['replies'=>function($query) 
         { 
          $query->limit(1); 
         }]); 

      }])->first(); 
print_r($posts); 
+0

感謝を。私は試してみましたが、働いていません。 :( –