Use the discussions service. It gives your record a hidden topic and reuses posts, so comments get editing, reporting, reactions and moderation without you building any of it.
$discussions = $this->app->make('discussions');

$topicId = $discussions->open('example', $exampleId, $title, $userId);
// store $topicId on your row

$comments = $discussions->comments($topicId);
$result = $discussions->comment($topicId, $userId, $tipTapDocument);
$discussions->remove($topicId);

A comment is a post, in the same table as forum posts. That is the whole argument for it: the same editing window, the same reports, the same reactions, the same moderators — rather than a second conversation system that drifts from the first.

🚨 Open the topic lazily, the first time somebody actually comments. Most records never get one, and a topic per record from the moment it is created is a row nobody reads.

🚨 It starts empty. A forum topic is its first post; your record's topic is an empty room next to something already written. Counting an opening post that does not exist puts every comment count one too high.

Delete the topic when you delete the record, or you leave a conversation hanging off something that no longer exists — invisible on the site, still counted by anything counting posts.

Sign in to say whether this helped.