Laravel - Limite cada item filho com eficiência

Eu tenho isto:

$commentReplies = Comment::whereIn('comment_parent_id', $CommentsIDs)
                                  ->take(2)->get();

Onde$CommentsIDs é uma matriz de três IDs de comentários principais (1,2,3).

Estou tentando recuperar 2 respostas para cada um dos $ commentsIDs, se eles existirem. Portanto, um total de 6 respostas (2 para cada comentário) deve retornar com a consulta, se as respostas existirem, nada mais. No entanto, com o take (2), ele limita as respostas a 2, e só recebemos 2 respostas para um dos comentários. Como pode ser configurado para obter 2 respostas para cada um dos IDs de comentários da maneira mais eficiente e como eles podem ser renderizados na exibição com o aninhamento correto?

Algo como:

Comment 1
--Comment 1 Reply 1 (load this)
--Comment 1 Reply 2 (load this)
--Comment 1 Reply 3 (don't load this)
--Comment 1 Reply 4 (don't load this)
Comment 2
--Comment 2 Reply 1 (load this)
--Comment 2 Reply 2 (load this)
--Comment 2 Reply 3 (don't load this)
Comment 3
(no replies, don't load anything)

Atualizar:
Aqui está o modelo de comentários:

class Comment extends BaseModel {

 public function latestTwoComments()
 {
     return $this->hasMany('Comment','comment_parent_id')->latest()->nPerGroup('comment_parent_id', 2);
 }

}

Inquerir:

$comments = Comment::with('latestTwoComments')->get();
dd(DB::getQueryLog());

// Result:
'query' => string 'select * from (select `comments`.*, @rank := IF(@group = comment_parent_id, @rank+1, 1) as rank_575b053fb57f8fab5bc86dd324b39b91, @group := comment_parent_id as group_575b053fb57f8fab5bc86dd324b39b91 from (SELECT @rank:=0, @group:=0) as vars, comments where `comments`.`deleted_at` is null order by `comment_parent_id` asc, `created_at` desc) as comments where `comments`.`deleted_at` is null and `rank_575b053fb57f8fab5bc86dd324b39b91` <= ? and `comments`.`comment_parent_id` in (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?'... (length=603)

questionAnswers(1)

yourAnswerToTheQuestion