128 lines
4.5 KiB
PHP
Raw Permalink Normal View History

<?php
namespace generate\traits;
trait Tools
{
public function getMiddleStr($str, $leftStr, $rightStr)
{
$left = strpos($str, $leftStr);
$right = strpos($str, $rightStr, $left);
if ($left < 0 or $right < $left) return '';
return substr($str, $left + strlen($leftStr), $right - $left - strlen($leftStr));
}
/**
* @param $field_name
* @param $field_type
* @return mixed
* 常用类型
* tinyint,smallint,mediumint,int,bigint,float,double,decimal
* char,varchar,tinytext/tinyblob,text/blob,longtext/longblob
* date,datetime,timestamp,time,year
*/
public function getFieldInfo($field_name, $field_type)
{
//默认类型
$type = 'tinyint';
//默认长度
$length = 10;
//默认小数点后位数
$digit = 0;
if (0 === strpos($field_type, 'tinyint')) {
$type = 'tinyint';
$length = $this->getMiddleStr($field_type, $type . '(', ')');
} else if (0 === strpos($field_type, 'smallint')) {
$type = 'smallint';
$length = $this->getMiddleStr($field_type, $type . '(', ')');
} else if (0 === strpos($field_type, 'mediumint')) {
$type = 'mediumint';
$length = $this->getMiddleStr($field_type, $type . '(', ')');
} else if (0 === strpos($field_type, 'int')) {
$type = 'int';
$length = $this->getMiddleStr($field_type, $type . '(', ')');
} else if (0 === strpos($field_type, 'bigint')) {
$type = 'bigint';
$length = $this->getMiddleStr($field_type, $type . '(', ')');
} else if (0 === strpos($field_type, 'float')) {
$type = 'float';
$length = $this->getMiddleStr($field_type, $type . '(', ')');
} else if (0 === strpos($field_type, 'double')) {
$type = 'double';
$length = $this->getMiddleStr($field_type, $type . '(', ')');
} else if (0 === strpos($field_type, 'decimal')) {
$type = 'decimal';
$length = $this->getMiddleStr($field_type, $type . '(', ')');
} else if (0 === strpos($field_type, 'char')) {
$type = 'char';
$length = $this->getMiddleStr($field_type, $type . '(', ')');
} else if (0 === strpos($field_type, 'varchar')) {
$type = 'varchar';
$length = $this->getMiddleStr($field_type, $type . '(', ')');
} else if (0 === strpos($field_type, 'tinytext')) {
$type = 'tinytext';
$length = $this->getMiddleStr($field_type, $type . '(', ')');
} else if (0 === strpos($field_type, 'tinyblob')) {
$type = 'tinyblob';
$length = $this->getMiddleStr($field_type, $type . '(', ')');
} else if (0 === strpos($field_type, 'text')) {
$type = 'text';
$length = $this->getMiddleStr($field_type, $type . '(', ')');
} else if (0 === strpos($field_type, 'blob')) {
$type = 'blob';
$length = $this->getMiddleStr($field_type, $type . '(', ')');
} else if (0 === strpos($field_type, 'longtext')) {
$type = 'longtext';
$length = $this->getMiddleStr($field_type, $type . '(', ')');
} else if (0 === strpos($field_type, 'longblob')) {
$type = 'longblob';
$length = $this->getMiddleStr($field_type, $type . '(', ')');
} else if (0 === strpos($field_type, 'date')) {
$type = 'date';
$length = $this->getMiddleStr($field_type, $type . '(', ')');
} else if (0 === strpos($field_type, 'datetime')) {
$type = 'datetime';
$length = $this->getMiddleStr($field_type, $type . '(', ')');
} else if (0 === strpos($field_type, 'timestamp')) {
$type = 'timestamp';
$length = $this->getMiddleStr($field_type, $type . '(', ')');
} else if (0 === strpos($field_type, 'time')) {
$type = 'time';
$length = $this->getMiddleStr($field_type, $type . '(', ')');
} else if (0 === strpos($field_type, 'year')) {
$type = 'year';
$length = $this->getMiddleStr($field_type, $type . '(', ')');
} else if (0 === strpos($field_type, 'json')) {
$type = 'json';
$length = $this->getMiddleStr($field_type, $type . '(', ')');
}
return [
'name' => $field_name,
'type' => $type,
'length' => $length,
'digit' => $digit,
];
}
}