From fcb45e6479d4c13084c8033e543e0c1fdeead8e5 Mon Sep 17 00:00:00 2001 From: wei <> Date: Tue, 30 Jan 2007 01:07:15 +0000 Subject: add column type values for mysql --- .../ActiveRecord/Vendor/TMysqlColumnMetaData.php | 41 +++++++++++++++++++++- .../ActiveRecord/Vendor/TSqliteColumnMetaData.php | 25 ++++++++++++- 2 files changed, 64 insertions(+), 2 deletions(-) (limited to 'framework/Data') 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() -- cgit v1.2.3