32
32
public function describe($table, $schema=null)
35
$results = $this->pdo()->query("DESCRIBE $table");
38
require_once CORE_PATH . 'libs/ActiveRecord/db_pool/metadata.php';
39
$metadata = new Metadata();
40
while ($field = $results->fetchObject()) {
42
$attribute = $metadata->attribute($field->Field);
44
$attribute->alias = ucwords(strtr($field->Field,'_-',' '));
47
if ($field->Extra === 'auto_increment') {
48
$attribute->autoIncrement = TRUE;
52
$attribute->default = $field->Default;
55
if($field->Null == 'NO'){
56
$attribute->notNull = FALSE;
59
//tipo de dato y longitud
60
if(preg_match('/^(\w+)\((\w+)\)$/', $field->Type, $matches)) {
61
$attribute->type = $matches[1];
62
$attribute->length = $matches[2];
64
$attribute->type = $field->Type;
65
$attribute->length = NULL;
71
$metadata->setPK($field->Field);
72
$attribute->PK = TRUE;
75
$metadata->setFK($field->Field);
76
$attribute->FK = TRUE;
79
$attribute->unique = TRUE;
35
$source = "$schema.$table";
40
$tableMetaData = TableMetaData::getInstance($this->_connection, $schema, $table);
41
if(!$tableMetaData->isLoaded()) {
42
$stmt = $this->pdo()->query("DESCRIBE $source");
45
foreach($stmt as $row) {
46
// aqui falta el codigo para ajustarlo que funcione con el mysql
84
} catch (PDOException $e) {
85
throw new KumbiaException($e->getMessage());
49
$tableMetaData->setMetadata($metadata);
52
return $tableMetaData;