Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
на примере тегов.
есть много разных сущностей, к которым надо привязать тег.
пример: пользователь, блог, пост, картинка, чего-то ещё.
делать много пивотов и читать их сложно и долго
видел ли кто-то более разумное решение, чем 100500 пивотов?
Не в сети
А polymorph-связи не подходят? Там как раз можно привязать один тег к куче сущностей.
Не в сети
посоветуйте, как , используя любые связи (лучше примером) дёрнуть кол-во записей у ссылаемой записи.
пример
запись "мой блог", содержит 25 постов. нужно дёрнуть это количество. именно на orm
чёт у мну ролики за шарики едут...
а так, всё отлично, всё работает.
Не в сети
Так?
$count = $blog->posts->count()
Где posts - это связь сущности "blog" с сущностями "posts".
Не в сети
неее, для этого надо вытащить посты, потом считать их. нагрузка.
Не в сети
после каждого нового поста инкрементируй поле count в таБлице постов
тогда если нужно количество оно всегда под рукой
ну и полиморфы юзай конечно
удачи
Не в сети
не катит.
именно используя полиморфы хочу знать как каунтить.
есть в инете решения, но они громозские.
Не в сети
неее, для этого надо вытащить посты, потом считать их. нагрузка.
Вместо:
$count = $blog->posts->count()
Просто:
$count = $blog->posts()->count()
Это не будет загружать записи, а просто выполнит select count(*) ...
Не в сети
Однако интересное решение, НО.
Представь, что это нужно (в принципе других ТЗ не существет), чтобы показать во вьюшке, ради того, чтобы информировать сидящего перед монитором. Не более, ни менее.
И так уже MVC в ларе прозрачный до такой степени, что уже задумываешься "а нахрена".
Т.е. во вьюшке я должен сказать
{{$blog->posts()->count()}}
Согласитесь, что хоть и работает, но ЭТО НЕ ПРАВИЛЬНО !
Не в сети
пока использую следующее решение:
public function countPosts()
{
return $this
->hasMany( 'App\Post', 'postable_id' )
->selectRaw( 'postable_id, count(*) as count' )
->where('postable_type', '=', 'App\Bort')
->groupBy('postable_id');
}
{{$blog->countPosts->first()->count}}
Это решение из инета и оно устраивает (пока) только по причине предварительного сбора данных на уровне контроллера/модели, а не дёрганья их из вьюшки
Не в сети
Админ! Переименуй плиз тему в "Сложные пивоты, полиморфы, их count() и другое"
Тема обещает быть интересной, если народ не слезет.
Не в сети
Есть один пакет для лайков
он основан на полиморфах
там используется два способа полиморфах
один morphTo MorphMany для связи лайков с разными таблицами(предметы/посты/вопросы)
второй morphTo MorphOne как раз для count()
используется просто :
$model->relatedmodel->count
там сохраняются все count() от всех таблиц
причем есть только два поля id/count
надеюсь это выход
удачи
Не в сети
Т.е. во вьюшке я должен сказать
{{$blog->posts()->count()}}
Согласитесь, что хоть и работает, но ЭТО НЕ ПРАВИЛЬНО !
Лучше в шаблон передавать из контроллера переменную, содержащую значение, которое возвратит этот метод.
А в шаблоне уже писать:
{{ $count }}
znack, отдельная связь (с отдельной таблицей) для количества элементов? Странно...
Не в сети
отдельная связь потому что много таблиц которые лайкуются
а так инкрементируются только в одну таблицу
Не в сети
Страницы 1