@bwrigley I worked on a similar project where a user can have a company and that company can have other companies and so on in a tree structure, and I had trouble querying all the child companies since I didn't know how deep I would have to go.
What I ended up doing, was to create a new "helper" table to break the recursive nature of "$company->parent->parent" into "$company->parents". So in your case it would be
comments
id | post_id | parent_comment_id | content
4 | 10 | null
5 | 10 | 4
6 | 10 | 5
comment_children
post_id (optional) | comment_id | child_comment_id | through_id | depth
10 | 4 | 5 | null | 1
10 | 4 | 6 | 5 | 2
10 | 5 | 6 | null | 1
now on your Comment model you can create children, parent and parents relations, order children by depth, query depth = 1 to get direct children and so on.
Now if you query $post->load('comments.children') you will get all children comments of top level comments no matter what depth they might be on. You can order them by depth/child_comment_id or limit the number loaded, ect. depending on your need.