支持在模型及Database类中定义当前操作数据表的前缀
This commit is contained in:
parent
b9579677a6
commit
2412040457
|
@ -11,61 +11,122 @@ use top\library\database\ifs\DatabaseIfs;
|
|||
class Database
|
||||
{
|
||||
|
||||
// 数据库驱动
|
||||
private static $driver;
|
||||
/**
|
||||
* 数据库驱动
|
||||
* @var null
|
||||
*/
|
||||
private static $driver = null;
|
||||
|
||||
// 当前类实例
|
||||
/**
|
||||
* 当前类实例
|
||||
* @var array
|
||||
*/
|
||||
private static $instance = [];
|
||||
|
||||
// 当前表结构
|
||||
/**
|
||||
* 当前表结构
|
||||
* @var array
|
||||
*/
|
||||
private static $tableDesc = [];
|
||||
|
||||
// 数据库配置
|
||||
/**
|
||||
* 数据库配置
|
||||
* @var array
|
||||
*/
|
||||
private $config = [];
|
||||
|
||||
// 当前操作的表
|
||||
/**
|
||||
* 当前操作的表
|
||||
* @var string
|
||||
*/
|
||||
private $table = '';
|
||||
|
||||
// 当前表的主键
|
||||
/**
|
||||
* 当前表的主键
|
||||
* @var string
|
||||
*/
|
||||
private $pk = '';
|
||||
|
||||
// 多个表(仅delete操作)
|
||||
private $effect = '';
|
||||
/**
|
||||
* 多个表(仅delete操作)
|
||||
* @var null
|
||||
*/
|
||||
private $effect = null;
|
||||
|
||||
private $distinct = '';
|
||||
/**
|
||||
* 数据去重
|
||||
* @var null
|
||||
*/
|
||||
private $distinct = null;
|
||||
|
||||
// 操作的字段
|
||||
private $field = '';
|
||||
/**
|
||||
* 操作的字段
|
||||
* @var null
|
||||
*/
|
||||
private $field = null;
|
||||
|
||||
// 条件
|
||||
/**
|
||||
* 条件
|
||||
* @var array
|
||||
*/
|
||||
private $where = [];
|
||||
|
||||
// 排序
|
||||
private $order = '';
|
||||
/**
|
||||
* 排序
|
||||
* @var null
|
||||
*/
|
||||
private $order = null;
|
||||
|
||||
// 范围
|
||||
private $limit = '';
|
||||
/**
|
||||
* 范围
|
||||
* @var null
|
||||
*/
|
||||
private $limit = null;
|
||||
|
||||
// 多表
|
||||
/**
|
||||
* 多表
|
||||
* @var array
|
||||
*/
|
||||
private $join = [];
|
||||
|
||||
// 关联
|
||||
/**
|
||||
* 关联
|
||||
* @var array
|
||||
*/
|
||||
private $on = [];
|
||||
|
||||
/**
|
||||
* Database constructor.
|
||||
* @param $table
|
||||
* @param $pk
|
||||
* @param $prefix
|
||||
* @throws \Exception
|
||||
*/
|
||||
private function __construct($table, $pk)
|
||||
private function __construct($table, $pk, $prefix)
|
||||
{
|
||||
$driver = Register::get('DBDriver');
|
||||
$this->config = $config = Config::instance()->get('db');
|
||||
$this->table = $config['prefix'] . $table;
|
||||
$this->table = (($prefix) ? $prefix : $config['prefix']) . $table;
|
||||
$this->pk = $pk;
|
||||
$this->setDriver($driver, $this->config);
|
||||
}
|
||||
|
||||
/**
|
||||
* 指定表
|
||||
* @param $table
|
||||
* @param string $pk
|
||||
* @param string $prefix
|
||||
* @return mixed
|
||||
* @throws \Exception
|
||||
*/
|
||||
public static function table($table, $pk = '', $prefix = '')
|
||||
{
|
||||
if (!isset(self::$instance[$table])) {
|
||||
self::$instance[$table] = new self($table, $pk, $prefix);
|
||||
}
|
||||
return self::$instance[$table];
|
||||
}
|
||||
|
||||
/**
|
||||
* 指定数据库驱动
|
||||
*
|
||||
|
@ -77,20 +138,6 @@ class Database
|
|||
self::$driver = $driver->connect($config);
|
||||
}
|
||||
|
||||
/**
|
||||
* 指定表
|
||||
* @param $table
|
||||
* @param string $pk
|
||||
* @return mixed
|
||||
*/
|
||||
public static function table($table, $pk = '')
|
||||
{
|
||||
if (!isset(self::$instance[$table])) {
|
||||
self::$instance[$table] = new self($table, $pk);
|
||||
}
|
||||
return self::$instance[$table];
|
||||
}
|
||||
|
||||
/**
|
||||
* 指定多张表
|
||||
* @param $effect
|
||||
|
@ -398,14 +445,14 @@ class Database
|
|||
*/
|
||||
private function _reset()
|
||||
{
|
||||
$this->effect = '';
|
||||
$this->distinct = '';
|
||||
$this->field = '';
|
||||
$this->effect = null;
|
||||
$this->distinct = null;
|
||||
$this->field = null;
|
||||
$this->join = [];
|
||||
$this->on = [];
|
||||
$this->where = [];
|
||||
$this->order = '';
|
||||
$this->limit = '';
|
||||
$this->order = null;
|
||||
$this->limit = null;
|
||||
$this->table = str_ireplace(' as this', '', $this->table);
|
||||
}
|
||||
|
||||
|
|
|
@ -9,36 +9,66 @@ namespace top\library;
|
|||
class Model
|
||||
{
|
||||
|
||||
// 数据库操作实例
|
||||
private $db;
|
||||
/**
|
||||
* 当前表名
|
||||
* @var string
|
||||
*/
|
||||
protected $table = '';
|
||||
|
||||
// 当前表名
|
||||
protected $table;
|
||||
|
||||
// 主键
|
||||
/**
|
||||
* 主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = '';
|
||||
|
||||
// 字段映射
|
||||
/**
|
||||
* 当前模型的表前缀
|
||||
* @var string
|
||||
*/
|
||||
protected $prefix = '';
|
||||
|
||||
/**
|
||||
* 字段映射
|
||||
* @var array
|
||||
*/
|
||||
protected $map = [];
|
||||
|
||||
// insert值映射
|
||||
/**
|
||||
* insert值映射
|
||||
* @var array
|
||||
*/
|
||||
protected $inReplace = [];
|
||||
|
||||
// update值映射
|
||||
/**
|
||||
* update值映射
|
||||
* @var array
|
||||
*/
|
||||
protected $updateReplace = [];
|
||||
|
||||
// 出库值映射
|
||||
/**
|
||||
* 出库值映射
|
||||
* @var array
|
||||
*/
|
||||
protected $outReplace = [];
|
||||
|
||||
// 模型消息(请注意:在方法中赋值会覆盖掉数据验证的message)
|
||||
/**
|
||||
* 模型消息(请注意:在方法中赋值会覆盖掉数据验证的message)
|
||||
* @var string
|
||||
*/
|
||||
protected $message = '';
|
||||
|
||||
// 自动验证
|
||||
/**
|
||||
* 自动验证
|
||||
* @var array
|
||||
*/
|
||||
protected $validate = [];
|
||||
|
||||
// 是否为insert操作,决定如何验证数据
|
||||
// true:验证模型中配置的全部字段
|
||||
// false:仅验证$data中存在的字段
|
||||
/**
|
||||
* 是否为insert操作,决定如何验证数据
|
||||
* true:验证模型中配置的全部字段
|
||||
* false:仅验证$data中存在的字段
|
||||
* @var bool
|
||||
*/
|
||||
private $isInsert = false;
|
||||
|
||||
/**
|
||||
|
@ -63,7 +93,7 @@ class Model
|
|||
*/
|
||||
private function getDb()
|
||||
{
|
||||
return Database::table($this->table, $this->pk);
|
||||
return Database::table($this->table, $this->pk, $this->prefix);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -245,50 +275,50 @@ class Model
|
|||
|
||||
/**
|
||||
* 计数
|
||||
* @param string $param
|
||||
* @param null $param
|
||||
* @return mixed
|
||||
*/
|
||||
public function count($param = '')
|
||||
public function count($param = null)
|
||||
{
|
||||
return $this->getDb()->common($param, 'count');
|
||||
}
|
||||
|
||||
/**
|
||||
* 平均值
|
||||
* @param string $param
|
||||
* @param null $param
|
||||
* @return mixed
|
||||
*/
|
||||
public function avg($param = '')
|
||||
public function avg($param = null)
|
||||
{
|
||||
return $this->getDb()->common($param, 'avg');
|
||||
}
|
||||
|
||||
/**
|
||||
* 最大值
|
||||
* @param string $param
|
||||
* @param null $param
|
||||
* @return mixed
|
||||
*/
|
||||
public function max($param = '')
|
||||
public function max($param = null)
|
||||
{
|
||||
return $this->getDb()->common($param, 'max');
|
||||
}
|
||||
|
||||
/**
|
||||
* 最小值
|
||||
* @param string $param
|
||||
* @param null $param
|
||||
* @return mixed
|
||||
*/
|
||||
public function min($param = '')
|
||||
public function min($param = null)
|
||||
{
|
||||
return $this->getDb()->common($param, 'min');
|
||||
}
|
||||
|
||||
/**
|
||||
* 求和
|
||||
* @param string $param
|
||||
* @param null $param
|
||||
* @return mixed
|
||||
*/
|
||||
public function sum($param = '')
|
||||
public function sum($param = null)
|
||||
{
|
||||
return $this->getDb()->common($param, 'sum');
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue