Comments 16
В новой версии добавят готовый метод. Убегаю, пруф позже сброшу.
Годно, но можно пойти дальше. Взять стандартную модель, которую мы наследуем — Illuminate\Database\Eloquent\Model и расширить (extend'нуть) ее ровно на аналогичный метод универсально для всех моделей. Но как говорит комментатор выше — это уже сделано в новой версии.
Начиная с версии Laravel 5.2.32 метод withCount() доступен «из коробки».
laravel.com/docs/5.2/eloquent-relationships#querying-relations
laravel.com/docs/5.2/eloquent-relationships#querying-relations
Можно было остановиться на $post->comments->count(); Лишних запросов не делает, не требует добавления n строк кода каждый раз как нужно что-то посчитать, выглядит понятно и красиво.
Вместо
array_key_exists('commentsCount', $this->relations)
можно писать
$this->relationLoaded('commentsCount')
array_key_exists('commentsCount', $this->relations)
можно писать
$this->relationLoaded('commentsCount')
А что если хранить count отдельно и при добавлении поста его инкрементировать? У меня сейчас сделано именно так. Какие подводные камни?
Как минимум избыточность. Также в зависимости от приложения необходимо будет инкрементировать/декрементировать счётчик при других действиях над постом: модерация, удаление и так далее.
Эта избыточность поможет избежать лишних запросов в БД, потому что *_count будет просто еще одной колонкой в таблице. А обновления счетчика можно сделать через события :)
Вся эта работа с фреймворками напоминает барахтанье в дерьме :)
О чудо, тривиальные вещи делаются через тройные выверты.
Трезвый взгляд на фреймворки:
http://blog.kpitv.net/article/frameworks-1/
О чудо, тривиальные вещи делаются через тройные выверты.
Трезвый взгляд на фреймворки:
http://blog.kpitv.net/article/frameworks-1/
классный блог кстати, мне нравится ваш минимализм
Дочитал по линке до строки «Плохая документация.» и сразу захотел «дать в рыло» ответным линком.
Где здесь «плохая документация»?
Где здесь «плохая документация»?
К Ларе статье относиться меньше всего.
С ней я и меньше всего работал. :)
Там дальше расшифровывается, что имеется под «Плохой документацией».
С ней я и меньше всего работал. :)
Там дальше расшифровывается, что имеется под «Плохой документацией».
И, тем не менее, Лара есть фреймворк ;)
Другими словами, ты пишешь «все фреймворки отстой» и при этом говоришь, что «фреймворк Laravel меньше всего относится к статье»…
Где логика, чувак?
Другими словами, ты пишешь «все фреймворки отстой» и при этом говоришь, что «фреймворк Laravel меньше всего относится к статье»…
Где логика, чувак?
Там написано не совсем «все фреймворки отстой».
Мне не нравиться, что для многих вещей нужно делать тройные выверты.
Мне не нравиться, что для многих вещей нужно делать тройные выверты.
Sign up to leave a comment.
Настройка Laravel relationships — подсчет комментариев (вольный перевод)