public static function getList($parameters = array()) { $query = new Query(static::getEntity()); if (!isset($parameters['select'])) { $query->setSelect(array('*')); } foreach ($parameters as $param => $value) { switch ($param) { case 'select': $query->setSelect($value); break; case 'filter': $query->setFilter($value); break; case 'group': $query->setGroup($value); break; case 'order': $query->setOrder($value); break; case 'limit': $query->setLimit($value); break; case 'offset': $query->setOffset($value); break; case 'count_total': $query->countTotal($value); break; case 'options': $query->setOptions($value); break; case 'runtime': foreach ($value as $name => $fieldInfo) { $query->registerRuntimeField($name, $fieldInfo); } break; case 'data_doubling': if ($value) { $query->enableDataDoubling(); } else { $query->disableDataDoubling(); } break; default: throw new Main\ArgumentException("Unknown parameter: " . $param, $param); } } return $query->exec(); }