From 0751508ae3e1e2731e7c699b69c873e31ecc9ab7 Mon Sep 17 00:00:00 2001 From: Frederic Guillot Date: Sun, 3 Jan 2016 18:18:14 -0500 Subject: Reduce number of SQL queries for actions --- app/Model/ActionParameter.php | 45 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) (limited to 'app/Model/ActionParameter.php') diff --git a/app/Model/ActionParameter.php b/app/Model/ActionParameter.php index f170ef66..1e4d7544 100644 --- a/app/Model/ActionParameter.php +++ b/app/Model/ActionParameter.php @@ -24,10 +24,53 @@ class ActionParameter extends Base * Get all action params * * @access public + * @return array + */ + public function getAll() + { + $params = $this->db->table(self::TABLE)->findAll(); + return $this->toDictionary($params); + } + + /** + * Get all params for a list of actions + * + * @access public + * @param array $action_ids + * @return array + */ + public function getAllByActions(array $action_ids) + { + $params = $this->db->table(self::TABLE)->in('action_id', $action_ids)->findAll(); + return $this->toDictionary($params); + } + + /** + * Build params dictionary + * + * @access private + * @param array $params + * @return array + */ + private function toDictionary(array $params) + { + $result = array(); + + foreach ($params as $param) { + $result[$param['action_id']][$param['name']] = $param['value']; + } + + return $result; + } + + /** + * Get all action params for a given action + * + * @access public * @param integer $action_id * @return array */ - public function getAll($action_id) + public function getAllByAction($action_id) { return $this->db->hashtable(self::TABLE)->eq('action_id', $action_id)->getAll('name', 'value'); } -- cgit v1.2.3