diff options
author | wei <> | 2007-01-30 01:07:15 +0000 |
---|---|---|
committer | wei <> | 2007-01-30 01:07:15 +0000 |
commit | fcb45e6479d4c13084c8033e543e0c1fdeead8e5 (patch) | |
tree | f8d5c98c3ed8e165dfd1ede486b69c0c282e0432 /framework/Data/ActiveRecord | |
parent | ace9c57b1c50709bbe8085e9cf99161a4c574be2 (diff) |
add column type values for mysql
Diffstat (limited to 'framework/Data/ActiveRecord')
-rw-r--r-- | framework/Data/ActiveRecord/Vendor/TMysqlColumnMetaData.php | 41 | ||||
-rw-r--r-- | framework/Data/ActiveRecord/Vendor/TSqliteColumnMetaData.php | 25 |
2 files changed, 64 insertions, 2 deletions
diff --git a/framework/Data/ActiveRecord/Vendor/TMysqlColumnMetaData.php b/framework/Data/ActiveRecord/Vendor/TMysqlColumnMetaData.php index d659851f..7c841181 100644 --- a/framework/Data/ActiveRecord/Vendor/TMysqlColumnMetaData.php +++ b/framework/Data/ActiveRecord/Vendor/TMysqlColumnMetaData.php @@ -26,6 +26,9 @@ class TMysqlColumnMetaData extends TComponent private $_default;
private $_notNull=true;
private $_property;
+ private $_length;
+
+ private $_typeValues;
private $_isPrimary=null;
@@ -43,11 +46,47 @@ class TMysqlColumnMetaData extends TComponent {
$this->_property=$property;
$this->_name=$name;
- $this->_type=$type;
+ //$this->_type=$type;
$this->_notNull=$notNull;
$this->_autoIncrement=$autoIncrement;
$this->_default=$default;
$this->_isPrimary=$primary;
+ $this->processType($type);
+ }
+
+ protected function processType($type)
+ {
+ if(is_int($pos=strpos($type, '(')))
+ {
+ $match=array();
+ if(preg_match('/\((.*)\)/', $type, $match))
+ {
+ $this->_type = substr($type,0,$pos);
+ switch(strtolower($this->_type))
+ {
+ case 'set':
+ case 'enum':
+ $this->_typeValues = preg_split('/\s*,\s*|\s+/', preg_replace('/\'|"/', '', $match[1]));
+ break;
+ default:
+ $this->_length=floatval($match[1]);
+ }
+ }
+ else
+ $this->_type = $type;
+ }
+ else
+ $this->_type = $type;
+ }
+
+ public function getTypeValues()
+ {
+ return $this->_typeValues;
+ }
+
+ public function getLength()
+ {
+ return $this->_length;
}
/**
diff --git a/framework/Data/ActiveRecord/Vendor/TSqliteColumnMetaData.php b/framework/Data/ActiveRecord/Vendor/TSqliteColumnMetaData.php index 92315a1a..8f4ded39 100644 --- a/framework/Data/ActiveRecord/Vendor/TSqliteColumnMetaData.php +++ b/framework/Data/ActiveRecord/Vendor/TSqliteColumnMetaData.php @@ -29,16 +29,39 @@ class TSqliteColumnMetaData extends TComponent private $_default;
private $_primary=false;
private $_property;
+ private $_length;
public function __construct($property,$name,$type,$notNull,$autoIncrement,$default,$primary)
{
$this->_property=$property;
$this->_name=$name;
- $this->_type=$type;
$this->_notNull=$notNull;
$this->_autoIncrement=$autoIncrement;
$this->_default=$default;
$this->_primary=$primary;
+ $this->processType($type);
+ }
+
+ protected function processType($type)
+ {
+ if(is_int($pos=strpos($type, '(')))
+ {
+ $match=array();
+ if(preg_match('/\((.*)\)/', $type, $match))
+ {
+ $this->_length=floatval($match[1]);
+ $this->_type = substr($type,0,$pos);
+ }
+ else
+ $this->_type = $type;
+ }
+ else
+ $this->_type = $type;
+ }
+
+ public function getLength()
+ {
+ return $this->_length;
}
public function getPHPType()
|