>Нужно ли в модели делать связь самим с собой
можно (не обязательно), как-то так:
public function children()
{
return $this->hasMany(self::class, 'parent_id');
}
public function parent()
{
return $this->belongsTo(self::class);
}
>parent_id в таблицу добавил, в контроллере тоже сортирую по нему
нужно сортировать по какому-то представлению типа materialized path или левому значению из nested set (но он меньше подходит для комментариев, так как у него долгая вставка).
Подробнее, например, здесь.
https://communities.bmc.com/docs/DOC-9902 единственное, для быстрой сортировки для комментариев в качестве "элемента пути" лучше использовать что-то одинаковой длины, например timestamp в unixtime, на всякий случай приведенный к длине 13 знаков