/** * @param array $where * @param array $fields * @param null $order * @param null $direction * @param null $limit * @param null $page * @param array $joins * @param null $group * @return array */ protected function _all($where = array(), $fields = array("*"), $order = null, $direction = null, $limit = null, $page = null, $joins = array(), $group = null) { $query = $this->connector->query()->from($this->table, $fields); foreach ($joins as $table => $values) { $query->join($table, $values['ON'], $values['fields']); } foreach ($where as $clause => $value) { if (is_array($value)) { if (isset($value[2])) { $query->whereDate($clause, $value[0]); } elseif (isset($value[1])) { $query->where($clause, $value[0], $value[1]); } else { $query->where($clause, $value[0]); } } else { $query->where($clause, $value); } } if ($order != null) { $query->order($order, $direction); } if ($group != null) { $query->group($group); } if ($limit != null) { $query->limit($limit, $page); } $rows = array(); $class = StringMethods::classNameWithoutNamespace(get_class($this)); foreach ($query->all() as $row) { $rows[] = new $class($row); } return $rows; }