Use DBIx::Class::Tree with Navigation result set.