Я бы предложил просто сделать звонок, который вы уже сделали, то есть Tag::withCount(['video', 'post'])->get()
, и добавить это к вашей модели тега:
// Tag.php
class Tag
{
...
// Create an attribute that can be called using 'taggables_count'
public function getTaggablesCountAttribute()
{
return $this->videos_count + $this->posts_count;
}
...
}
и затем в вашем цикле (или, тем не менее, вы используете элементы в коллекции):
@foreach($tags as $tag)
{{ $tag->taggables_count }}
@endforeach
Для этой настройки требуется, чтобы вы получили теги с withCount['video', 'post']
. Если вы этого не сделаете, вы, вероятно, получите 0
в обмен на $tag->taggables_count
.
Если вы действительно беспокоитесь о скорости, вам придется создать запрос вручную и выполнить там добавление.