public function fetchAll($where = '', $order = '', $limit = '', $paginated = '') { if ($paginated) { $select = new \Zend\Db\Sql\Select('hwi_product'); if (is_array($where)) { $select->where($where); } if (is_array($order)) { foreach ($order as $key => $value) { $select->order($value); } } $rs = new \Zend\Db\ResultSet\ResultSet(); $rs->setArrayObjectPrototype(new product()); $pageAdapter = new \Zend\Paginator\Adapter\DbSelect($select, $this->tableGateway->getAdapter(), $rs); $paginator = new \Zend\Paginator\Paginator($pageAdapter); return $paginator; } $resultSet = $this->tableGateway->select($where, $order, $limit); return $resultSet; }
/** * Get the most searched queries * * @param $from begin time * @param $to end time * * @return associative array */ public function getMostSearchedQueries($from = null, $to = null, $limit = 20) { $subSelect = $this->sql->select(); $subSelect->columns(array('phrase' => 'value')); $subSelect->join(array('noresults' => 'user_stats_fields'), 'user_stats_fields.id = noresults.id', array()); $subSelect->join(array('user_stats' => 'user_stats'), 'user_stats.id = user_stats_fields.id', array('session' => 'session')); if ($from && $to) { $format = "Y-m-d H:i:s"; $from = date($format, $from); $to = date($format, $to); $subSelect->where->greaterThan('user_stats.datestamp', $from); $subSelect->where->lessThan('user_stats.datestamp', $to); } $subSelect->where->equalTo('user_stats_fields.field', 'phrase'); $subSelect->where->equalTo('noresults.field', 'noresults'); $subSelect->where->EqualTo('noresults.value', 'false'); $subSelect->where->notEqualTo('user_stats_fields.value', ''); $subSelect->group(array('phrase', 'session')); $select = new \Zend\Db\Sql\Select(); $select->columns(array('query' => 'phrase', 'count' => new Expression("COUNT(*)"))); $select->from(array('phrase' => $subSelect)); $select->group(array('phrase')); $select->order('count desc'); $select->limit($limit); $statement = $this->sql->prepareStatementForSqlObject($select); $result = $statement->execute(); return $result; }