Годно, но можно пойти дальше. Взять стандартную модель, которую мы наследуем — Illuminate\Database\Eloquent\Model и расширить (extend'нуть) ее ровно на аналогичный метод универсально для всех моделей. Но как говорит комментатор выше — это уже сделано в новой версии.
Можно было остановиться на $post->comments->count(); Лишних запросов не делает, не требует добавления n строк кода каждый раз как нужно что-то посчитать, выглядит понятно и красиво.
Как минимум избыточность. Также в зависимости от приложения необходимо будет инкрементировать/декрементировать счётчик при других действиях над постом: модерация, удаление и так далее.
Эта избыточность поможет избежать лишних запросов в БД, потому что *_count будет просто еще одной колонкой в таблице. А обновления счетчика можно сделать через события :)
Безусловно, но это «палка о двух концах». У обоих подходов есть как плюсы, так и минусы. Выбирать нужно исходя из специфики разрабатываемого приложения.
И, тем не менее, Лара есть фреймворк ;)
Другими словами, ты пишешь «все фреймворки отстой» и при этом говоришь, что «фреймворк Laravel меньше всего относится к статье»…
Где логика, чувак?
Настройка Laravel relationships — подсчет комментариев (вольный перевод)