protected function _processSearch() { $class = $this->_getSearchClass(); $table = DBObject::stGetTableName($class); $fieldId = $class::stGetFieldConfigFiltered(array("identifier" => true)); $select = "SELECT {$this->fields} FROM {$table}"; $where = ""; foreach ($this->filters as $field => $filter) { $field = DBObject::stObjFieldToDBField($field); $op = $filter[0]; if (is_array($filter[1])) { $whereField = "("; foreach ($filter[1] as $value) { // TODO soporte para OR ? $whereField = $whereField . "'" . $value . "'" . " AND "; } $whereField = substr($whereField, 0, -5) . ")"; } else { $whereField = "'" . $filter[1] . "'"; } $where = $where . $field . " " . $op . " " . $whereField . " AND "; } if ($where != "") { $select = $select . " WHERE " . substr($where, 0, -5); } $offset = ($this->page - 1) * $this->limit; $select = $select . " LIMIT {$offset},{$this->limit}"; $mysqlParams = static::_stGetMySQLParams(); $search = DBMySQLConnection::stVirtualConstructor($mysqlParams)->query($select); // Anotamos los resultados $this->count = $search->num_rows; // Guardamos la búsqueda $this->search = $search; }
/** * Es publica porque también lo usan clases "hermanas" como DBObjectSearch */ static function _stGetMySQLParams() { $class = get_called_class(); $fieldId = $class::stGetFieldConfigFiltered(array("identifier" => true)); $table = DBObject::stGetTableName($class); return array("table" => $table, "fieldId" => $fieldId); }
private function _getTableSchema($config, $class) { $table = "CREATE TABLE `" . DBObject::stGetTableName($class) . "` ( \n"; $DBColumns = $this->_getColumnsSchema($config); // Añadimos la clave primaria $DBColumns[] = $this->_getPrimaryKey($config); $table = $table . implode(",\n", $DBColumns); $table = $table . "\n ) ENGINE=InnoDB DEFAULT CHARSET=latin1"; return $table; }