summaryrefslogtreecommitdiff
path: root/framework/Data/ActiveRecord
diff options
context:
space:
mode:
authorwei <>2007-01-30 01:07:15 +0000
committerwei <>2007-01-30 01:07:15 +0000
commitfcb45e6479d4c13084c8033e543e0c1fdeead8e5 (patch)
treef8d5c98c3ed8e165dfd1ede486b69c0c282e0432 /framework/Data/ActiveRecord
parentace9c57b1c50709bbe8085e9cf99161a4c574be2 (diff)
add column type values for mysql
Diffstat (limited to 'framework/Data/ActiveRecord')
-rw-r--r--framework/Data/ActiveRecord/Vendor/TMysqlColumnMetaData.php41
-rw-r--r--framework/Data/ActiveRecord/Vendor/TSqliteColumnMetaData.php25
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()