diff options
author | Frederic Guillot <fred@kanboard.net> | 2016-01-03 18:18:14 -0500 |
---|---|---|
committer | Frederic Guillot <fred@kanboard.net> | 2016-01-03 18:18:14 -0500 |
commit | 0751508ae3e1e2731e7c699b69c873e31ecc9ab7 (patch) | |
tree | 8a0fabcbdef995b4d22979aafc6a6e720dc7c445 /app/Model/Action.php | |
parent | e2b6d4fa18d5f7bcdd0f44b9c952aa80e02285de (diff) |
Reduce number of SQL queries for actions
Diffstat (limited to 'app/Model/Action.php')
-rw-r--r-- | app/Model/Action.php | 41 |
1 files changed, 24 insertions, 17 deletions
diff --git a/app/Model/Action.php b/app/Model/Action.php index c368b494..5fcfbaa7 100644 --- a/app/Model/Action.php +++ b/app/Model/Action.php @@ -34,10 +34,8 @@ class Action extends Base if (! empty($project_ids)) { $actions = $this->db->table(self::TABLE)->in('project_id', $project_ids)->findAll(); - - foreach ($actions as &$action) { - $action['params'] = $this->actionParameter->getAll($action['id']); - } + $params = $this->actionParameter->getAllByActions(array_column($actions, 'id')); + $this->attachParamsToActions($actions, $params); } return $actions; @@ -53,12 +51,8 @@ class Action extends Base public function getAllByProject($project_id) { $actions = $this->db->table(self::TABLE)->eq('project_id', $project_id)->findAll(); - - foreach ($actions as &$action) { - $action['params'] = $this->actionParameter->getAll($action['id']); - } - - return $actions; + $params = $this->actionParameter->getAllByActions(array_column($actions, 'id')); + return $this->attachParamsToActions($actions, $params); } /** @@ -70,12 +64,8 @@ class Action extends Base public function getAll() { $actions = $this->db->table(self::TABLE)->findAll(); - - foreach ($actions as &$action) { - $action['params'] = $this->actionParameter->getAll($action['id']); - } - - return $actions; + $params = $this->actionParameter->getAll(); + return $this->attachParamsToActions($actions, $params); } /** @@ -90,13 +80,30 @@ class Action extends Base $action = $this->db->table(self::TABLE)->eq('id', $action_id)->findOne(); if (! empty($action)) { - $action['params'] = $this->actionParameter->getAll($action_id); + $action['params'] = $this->actionParameter->getAllByAction($action_id); } return $action; } /** + * Attach parameters to actions + * + * @access private + * @param array &$actions + * @param array &$params + * @return array + */ + private function attachParamsToActions(array &$actions, array &$params) + { + foreach ($actions as &$action) { + $action['params'] = isset($params[$action['id']]) ? $params[$action['id']] : array(); + } + + return $actions; + } + + /** * Remove an action * * @access public |