chg: [taxonomy] Faster fetching event and attribute counts for tag

pull/6851/head
Jakub Onderka 2021-01-12 21:34:17 +01:00
parent f187780d2a
commit 3d7937cc04
2 changed files with 11 additions and 12 deletions

View File

@ -85,18 +85,18 @@ class TaxonomiesController extends AppController
}
$this->loadModel('EventTag');
$this->loadModel('AttributeTag');
$tagIds = array_column(array_column(array_column($taxonomy['entries'], 'existing_tag'), 'Tag'), 'id');
$eventCount = $this->EventTag->countForTags($tagIds, $this->Auth->user());
$attributeTags = $this->AttributeTag->countForTags($tagIds, $this->Auth->user());
foreach ($taxonomy['entries'] as $key => $value) {
$count = 0;
$count_a = 0;
if (!empty($value['existing_tag'])) {
foreach ($value['existing_tag'] as $et) {
$count = $this->EventTag->find('count', array(
'conditions' => array('EventTag.tag_id' => $et['id'])
));
$count_a = $this->AttributeTag->find('count', array(
'conditions' => array('AttributeTag.tag_id' => $et['id'])
));
}
$tagId = $value['existing_tag']['Tag']['id'];
$count = isset($eventCount[$tagId]) ? $eventCount[$tagId] : 0;
$count_a = isset($attributeTags[$tagId]) ? $attributeTags[$tagId] : 0;
}
$taxonomy['entries'][$key]['events'] = $count;
$taxonomy['entries'][$key]['attributes'] = $count_a;

View File

@ -466,13 +466,12 @@ class Tag extends AppModel
public function getTagsByName($tag_names, $containTagConnectors = true)
{
$contain = array('EventTag', 'AttributeTag');
$tag_params = array(
'recursive' => -1,
'conditions' => array('name' => $tag_names)
'recursive' => -1,
'conditions' => array('name' => $tag_names)
);
if ($containTagConnectors) {
$tag_params['contain'] = $contain;
$tag_params['contain'] = array('EventTag', 'AttributeTag');
}
$tags_temp = $this->find('all', $tag_params);
$tags = array();