abstract class Base implements Db

Orm 数据库抽象基类

Traits

Trait Query

Properties

$wlink from Query
$rlink from Query
static protected array $dbInst 多个Model中共享db连接实例
protected bool $openCache 启用数据缓存
protected bool $currentQueryUseCache 单独标记当前的query使不使用缓存
protected int $whereNeedAddAndOrOr where操作需要加上and/or 0 : 初始化两个都不加 1 : 要加and 2: 要加 or
protected array $bindParams 执行sql时绑定的参数
protected array $conf 配置信息
string $tablePrefix 表前缀方便外部读取
protected array $sql sql组装
protected array $forceIndex 强制某表使用某索引
protected array $table 操作的表
protected array $join 是否内联 [表名 => 条件]
protected array $leftJoin 是否左联结 写法同内联
protected array $rightJoin 是否右联 写法同内联
protected string $union UNION 写法同内联
protected bool $paramsAutoReset orm参数是否自动重置
protected bool $alwaysClearTable $paramsAutoReset = false 的时候是否清除table.避免快捷方法重复调用table();
protected bool $alwaysClearColumns $paramsAutoReset = false 的时候是否清除查询的字段信息.主要用于按批获取数据不用多次调用columns();
protected string $columnsPrefix where、columns、orderBy、groupBy等操作自动添加的表别名前缀

Methods

where(string|array $column, string $value = '')

where条件组装 相等

from Query
whereColumn(string $column, string $column2)

where条件组装 两个列相等

from Query
whereRaw(string $where, array $params)

where条件原生条件

from Query
whereNot(string $column, string $value)

where条件组装 不等

from Query
whereGt(string $column, string $value)

where条件组装 大于

from Query
whereLt(string $column, string $value)

where条件组装 小于

from Query
whereGte(string $column, string $value)

where条件组装 大于等于

from Query
whereLte(string $column, string $value)

where条件组装 小于等于

from Query
whereIn(string $column, array $value)

where条件组装 in

from Query
whereNotIn(string $column, array $value)

where条件组装 not in

from Query
whereRegExp(string $column, string $value)

where条件组装 REGEXP

from Query
whereLike(string $column, bool $leftBlur = false, string $value = null, bool $rightBlur = false)

where条件组装 LIKE

from Query
whereNotLike(string $column, bool $leftBlur = false, string $value = null, bool $rightBlur = false)

where条件组装 LIKE

from Query
whereBetween(string $column, string $value, string $value2 = null)

where条件组装 BETWEEN

from Query
whereNotBetween(string $column, string $value, string $value2 = null)

where条件组装 NOT BETWEEN

from Query
whereNull(string $column)

where条件组装 IS NULL

from Query
whereNotNull(string $column)

where条件组装 IS NOT NULL

from Query
_and(callable $callable = null)

增加 and条件操作符

from Query
_or(callable $callable = null)

增加or条件操作符

from Query
lBrackets()

where条件增加左括号

from Query
rBrackets()

where条件增加右括号

from Query
columns(string|array $columns = '*')

选择列

from Query
$this;
addRawColumnPleaseUseCautiousIsMaybeUnsafe(string $column, array $bindParams = [])

No description

from Query
array
parseStringColumn(mixed $column)

解析字符串的字段 id, name,ctime 为数组

from Query
bool
haveMysqlFunction(string $column)

是否包含mysql函数

from Query
limit(int $offset = 0, int $limit = 10)

LIMIT

from Query
forceIndex(string $table, string $index, string $tablePrefix = null)

强制使用索引

from Query
orderBy(string $column, string $order = 'ASC')

排序

from Query
groupBy(string $column)

分组

from Query
having(string $column, string $operator = '=', string|array $value = null, string $logic = 'AND')

having语句

from Query
union(string|array $sql, bool $all = false)

union联结

from Query
bool
transaction(callable $query)

执行

from Query
paramsAutoReset(bool $autoReset = true, bool $alwaysClearTable = false, bool $alwaysClearColumns = true)

orm参数是否自动重置, 默认在执行语句后会重置orm参数,包含查询的表、字段信息、条件等信息

from Query
noCache()

标记本次查询不使用缓存

from Query
array
pluck(string $column, null $key = null, int $limit = null, bool $useMaster = false)

获取数据列值列表

from Query
plunk() deprecated

No description

from Query
chunk(int $num = 100, callable $func = null)

组块结果集-此方法前调用paramsAutoReset无效

from Query
bool|mixed
getOneValue(string $column, bool $useMaster = false)

获取一列

from Query
mixed
exists(bool|string $useMaster = false)

数据是否存在

from Query
mixed
doesntExist(bool|string $useMaster = false)

数据是否不存在

from Query
bool
startTransAction()

开启事务

from Query
bool
commit()

提交事务

from Query
bool
savePoint(string $pointName)

设置一个事务保存点

from Query
bool
rollBack(bool $rollBackTo = false)

回滚事务

from Query
$this;
setColumnsPrefix(string $prefix = '')

where、columns、orderBy、groupBy等操作自动添加的表别名前缀

$this
table(string|array $table = '', mixed $tablePrefix = null)

定义操作的表

resource|false
__get(string $db)

魔术方法 自动获取相应db实例

$this;
__call(string $name, array $arguments)

自动映射set方法

bool|false|mixed|resource
connectDb(string $db, bool $reConnect = false)

连接数据库

array
paginate(int $limit, bool $useMaster = false, null|int $page = null, mixed $fieldAsKey = false)

分页获取数据

string
getPk(string $table, string $tablePrefix = null)

获取表主键

array
getOne(bool $useMaster = false)

获取一条数据

$this
when(bool $condition, callable $trueCallback, callable $falseCallback = null)

根据条件是否成立执行对应的闭包

string
filterLike(string $val)

where 用户输入过滤

$this;
whereExists(string $subSql, array $subSqlBindParams = [])

where条件组装 WHERE EXISTS

$this;
whereNotExists(string $subSql, array $subSqlBindParams = [])

where条件组装 WHERE NOT EXISTS

string
formatColumnKey(string $column)

格式化查询字段

addColumnPrefix($column)

No description

$this
conditionFactory(string $column, array|int|string $value, string $operator = '=')

where 语句组装工厂

mixed
getColumnsAndClear()

获取columns属性中的值并清空

$this
join(string|array $table, string $on, mixed $tablePrefix = null)

join内联结

$this
leftJoin(string|array $table, string $on, mixed $tablePrefix = null)

leftJoin左联结

$this
rightJoin(string|array $table, string $on, mixed $tablePrefix = null)

rightJoin右联结

filterUnionSql($sql)

No description

string
parseOn(string $table, array $on)

解析联结的on参数

reset(bool $must = false)

orm参数重置

clearBindParams()

清空绑定的参数

array
getBindParams()

获取pdo绑定的参数

$this
resetAndClear()

重置所有orm参数及绑定

string
arrToCondition(array $arr)

SQL语句条件组装

array
parseKey(string $key, bool $and = true, bool $noCondition = false, bool $noTable = false)

SQL语句条件组装

mixed
getCacheVer(string $table)

根据表名获取cache版本号

setCacheVer(string $table)

设置cache版本号

__destruct()

析构函数

bool
isEntityModel()

判断当前查询是否属于实体模型

Details

in Query at line 37
Query where(string|array $column, string $value = '')

where条件组装 相等

Parameters

string|array $column 如 id user.id (这边的user为表别名如表pre_user as user 这边用user而非带前缀的原表名) 当$column为数组时 批量设置
string $value |int $value 当$column为数组时 此时$value为false时条件为or 否则为and

Return Value

Query

in Query at line 60
Query whereColumn(string $column, string $column2)

where条件组装 两个列相等

Parameters

string $column eg:username | user.username
string $column2 eg: nickname | user.nickname

Return Value

Query

in Query at line 76
Query whereRaw(string $where, array $params)

where条件原生条件

Parameters

string $where eg:utime > ctime + ?
array $params eg: [10]

Return Value

Query

in Query at line 90
Query whereNot(string $column, string $value)

where条件组装 不等

Parameters

string $column 如 id user.id (这边的user为表别名如表pre_user as user 这边用user而非带前缀的原表名)
string $value |int $value

Return Value

Query

in Query at line 104
Query whereGt(string $column, string $value)

where条件组装 大于

Parameters

string $column 如 id user.id (这边的user为表别名如表pre_user as user 这边用user而非带前缀的原表名)
string $value |int $value

Return Value

Query

in Query at line 118
Query whereLt(string $column, string $value)

where条件组装 小于

Parameters

string $column 如 id user.id (这边的user为表别名如表pre_user as user 这边用user而非带前缀的原表名)
string $value |int $value

Return Value

Query

in Query at line 132
Query whereGte(string $column, string $value)

where条件组装 大于等于

Parameters

string $column 如 id user.id (这边的user为表别名如表pre_user as user 这边用user而非带前缀的原表名)
string $value |int $value

Return Value

Query

in Query at line 146
Query whereLte(string $column, string $value)

where条件组装 小于等于

Parameters

string $column 如 id user.id (这边的user为表别名如表pre_user as user 这边用user而非带前缀的原表名)
string $value |int $value

Return Value

Query

in Query at line 160
Query whereIn(string $column, array $value)

where条件组装 in

Parameters

string $column 如 id user.id (这边的user为表别名如表pre_user as user 这边用user而非带前缀的原表名)
array $value

Return Value

Query

in Query at line 174
Query whereNotIn(string $column, array $value)

where条件组装 not in

Parameters

string $column 如 id user.id (这边的user为表别名如表pre_user as user 这边用user而非带前缀的原表名)
array $value [1,2,3]

Return Value

Query

in Query at line 188
Query whereRegExp(string $column, string $value)

where条件组装 REGEXP

Parameters

string $column 如 id user.id (这边的user为表别名如表pre_user as user 这边用user而非带前缀的原表名)
string $value |int $value

Return Value

Query

in Query at line 204
Query whereLike(string $column, bool $leftBlur = false, string $value = null, bool $rightBlur = false)

where条件组装 LIKE

Parameters

string $column 如 id user.id (这边的user为表别名如表pre_user as user 这边用user而非带前缀的原表名)
bool $leftBlur 是否开始左模糊匹配
string $value |int $value
bool $rightBlur 是否开始右模糊匹配

Return Value

Query

in Query at line 224
Query whereNotLike(string $column, bool $leftBlur = false, string $value = null, bool $rightBlur = false)

where条件组装 LIKE

Parameters

string $column 如 id user.id (这边的user为表别名如表pre_user as user 这边用user而非带前缀的原表名)
bool $leftBlur 是否开始左模糊匹配
string $value |int $value
bool $rightBlur 是否开始右模糊匹配

Return Value

Query

in Query at line 243
Query whereBetween(string $column, string $value, string $value2 = null)

where条件组装 BETWEEN

Parameters

string $column 如 id user.id (这边的user为表别名如表pre_user as user 这边用user而非带前缀的原表名)
string $value |int | array $value
string $value2 |int | null $value2

Return Value

Query

in Query at line 266
Query whereNotBetween(string $column, string $value, string $value2 = null)

where条件组装 NOT BETWEEN

Parameters

string $column 如 id user.id (这边的user为表别名如表pre_user as user 这边用user而非带前缀的原表名)
string $value |int | array $value
string $value2 |int | null $value2

Return Value

Query

in Query at line 287
Query whereNull(string $column)

where条件组装 IS NULL

Parameters

string $column 如 id user.id (这边的user为表别名如表pre_user as user 这边用user而非带前缀的原表名)

Return Value

Query

in Query at line 300
Query whereNotNull(string $column)

where条件组装 IS NOT NULL

Parameters

string $column 如 id user.id (这边的user为表别名如表pre_user as user 这边用user而非带前缀的原表名)

Return Value

Query

in Query at line 313
Query _and(callable $callable = null)

增加 and条件操作符

Parameters

callable $callable 如果传入函数则函数内执行的条件会被()包围

Return Value

Query

in Query at line 335
Query _or(callable $callable = null)

增加or条件操作符

Parameters

callable $callable 如果传入函数则函数内执行的条件会被()包围

Return Value

Query

in Query at line 355
Query lBrackets()

where条件增加左括号

Return Value

Query

in Query at line 377
Query rBrackets()

where条件增加右括号

Return Value

Query

in Query at line 391
Query columns(string|array $columns = '*')

选择列

Parameters

string|array $columns 默认选取所有 ['id, 'name'] 选取id,name两列,['article.id' => 'aid', 'article.title' => 'article_title'] 别名

Return Value

Query

in Query at line 420
$this; addRawColumnPleaseUseCautiousIsMaybeUnsafe(string $column, array $bindParams = [])

Parameters

string $column
array $bindParams

Return Value

$this;

in Query at line 434
protected array parseStringColumn(mixed $column)

解析字符串的字段 id, name,ctime 为数组

Parameters

mixed $column

Return Value

array

in Query at line 454
protected bool haveMysqlFunction(string $column)

是否包含mysql函数

->columns("DATE_FORMAT(from_unixtime(createtime),'%%H') as hour,SUM(value) AS nums,COUNT(DISTINCT identity) AS num")

Parameters

string $column

Return Value

bool

in Query at line 472
Query limit(int $offset = 0, int $limit = 10)

LIMIT

Parameters

int $offset 偏移量
int $limit 返回的条数

Return Value

Query

in Query at line 491
Query forceIndex(string $table, string $index, string $tablePrefix = null)

强制使用索引

Parameters

string $table 要强制索引的表名(不带前缀)
string $index 要强制使用的索引
string $tablePrefix 表前缀 不传则获取配置中配置的前缀

Return Value

Query

in Query at line 507
Query orderBy(string $column, string $order = 'ASC')

排序

Parameters

string $column 要排序的字段
string $order 方向,默认为正序

Return Value

Query

in Query at line 529
Query groupBy(string $column)

分组

Parameters

string $column 要设置分组的字段名

Return Value

Query

in Query at line 551
Query having(string $column, string $operator = '=', string|array $value = null, string $logic = 'AND')

having语句

Parameters

string $column 字段名
string $operator 操作符
string|array $value
string $logic 逻辑AND OR

Return Value

Query

in Query at line 575
Query union(string|array $sql, bool $all = false)

union联结

Parameters

string|array $sql 要union的sql
bool $all 是否为union all

Return Value

Query

in Query at line 597
bool transaction(callable $query)

执行

Parameters

callable $query

Return Value

bool

Exceptions

Exception

in Query at line 618
Query paramsAutoReset(bool $autoReset = true, bool $alwaysClearTable = false, bool $alwaysClearColumns = true)

orm参数是否自动重置, 默认在执行语句后会重置orm参数,包含查询的表、字段信息、条件等信息

Parameters

bool $autoReset 是否自动重置 查询的表、字段信息、条件等信息
bool $alwaysClearTable 用来控制在$paramsAutoReset = false 的时候是否清除查询的table信息.避免快捷方法重复调用table();
bool $alwaysClearColumns 用来控制在$paramsAutoReset = false 的时候是否清除查询的字段信息.主要用于按批获取数据不用多次调用columns();

Return Value

Query

in Query at line 631
Query noCache()

标记本次查询不使用缓存

Return Value

Query

in Query at line 647
array pluck(string $column, null $key = null, int $limit = null, bool $useMaster = false)

获取数据列值列表

Parameters

string $column 列名
null $key 返回数组中为列值指定自定义键(该自定义键必须是该表的其它字段列名)
int $limit 返回的条数
bool $useMaster 是否使用主库 默认读取从库

Return Value

array

in Query at line 662
plunk() deprecated

deprecated 请使用pluck方法

in Query at line 673
chunk(int $num = 100, callable $func = null)

组块结果集-此方法前调用paramsAutoReset无效

Parameters

int $num 每次获取的条数
callable $func 结果集处理函数。本回调函数内调用paramsAutoReset无效

in Query at line 710
bool|mixed getOneValue(string $column, bool $useMaster = false)

获取一列

Parameters

string $column 列名
bool $useMaster 是否使用主库 默认读取从库

Return Value

bool|mixed

in Query at line 724
mixed exists(bool|string $useMaster = false)

数据是否存在

Parameters

bool|string $useMaster 是否使用主库 默认读取从库

Return Value

mixed

in Query at line 736
mixed doesntExist(bool|string $useMaster = false)

数据是否不存在

Parameters

bool|string $useMaster 是否使用主库 默认读取从库

Return Value

mixed

in Query at line 746
bool startTransAction()

开启事务

Return Value

bool

in Query at line 757
bool commit()

提交事务

Return Value

bool

in Query at line 770
bool savePoint(string $pointName)

设置一个事务保存点

Parameters

string $pointName

Return Value

bool

in Query at line 783
bool rollBack(bool $rollBackTo = false)

回滚事务

Parameters

bool $rollBackTo 是否为还原到某个保存点

Return Value

bool

at line 175
$this; setColumnsPrefix(string $prefix = '')

where、columns、orderBy、groupBy等操作自动添加的表别名前缀

Parameters

string $prefix

Return Value

$this;

at line 189
$this table(string|array $table = '', mixed $tablePrefix = null)

定义操作的表

Parameters

string|array $table 表名 要取别名时使用 [不带前缀表名 => 别名]
mixed $tablePrefix 表前缀 不传则获取配置中配置的前缀

Return Value

$this

at line 206
resource|false __get(string $db)

魔术方法 自动获取相应db实例

Parameters

string $db 要连接的数据库类型

Return Value

resource|false 数据库 连接标识

at line 224
$this; __call(string $name, array $arguments)

自动映射set方法

Parameters

string $name
array $arguments

Return Value

$this;

Exceptions

BadMethodCallException

at line 246
protected bool|false|mixed|resource connectDb(string $db, bool $reConnect = false)

连接数据库

Parameters

string $db rlink/wlink
bool $reConnect 是否重连--用于某些db如mysql.长连接被服务端断开的情况

Return Value

bool|false|mixed|resource

at line 300
array paginate(int $limit, bool $useMaster = false, null|int $page = null, mixed $fieldAsKey = false)

分页获取数据

Parameters

int $limit 每页返回的条数
bool $useMaster 是否使用主库 默认读取从库
null|int $page 当前页数-不传则获取配置中var_page配置的request值
mixed $fieldAsKey 返回以某个字段做为key的数组

Return Value

array

at line 315
string getPk(string $table, string $tablePrefix = null)

获取表主键

Parameters

string $table 要获取主键的表名
string $tablePrefix 表前缀

Return Value

string || false

at line 333
array getOne(bool $useMaster = false)

获取一条数据

Parameters

bool $useMaster 是否使用主库 默认读取从库

Return Value

array | bool

at line 352
$this when(bool $condition, callable $trueCallback, callable $falseCallback = null)

根据条件是否成立执行对应的闭包

Parameters

bool $condition 条件
callable $trueCallback 条件成立执行的闭包
callable $falseCallback 条件不成立执行的闭包

Return Value

$this

at line 369
protected string filterLike(string $val)

where 用户输入过滤

Parameters

string $val

Return Value

string

at line 382
$this; whereExists(string $subSql, array $subSqlBindParams = [])

where条件组装 WHERE EXISTS

Parameters

string $subSql | Closure $subSql 语句或闭包
array $subSqlBindParams 子句的PDO绑定参数

Return Value

$this;

at line 399
$this; whereNotExists(string $subSql, array $subSqlBindParams = [])

where条件组装 WHERE NOT EXISTS

Parameters

string $subSql | Closure $subSql 语句或闭包
array $subSqlBindParams 子句的PDO绑定参数

Return Value

$this;

at line 415
protected string formatColumnKey(string $column)

格式化查询字段

Parameters

string $column

Return Value

string

at line 449
protected addColumnPrefix($column)

Parameters

$column

at line 463
$this conditionFactory(string $column, array|int|string $value, string $operator = '=')

where 语句组装工厂

Parameters

string $column 如 id user.id (这边的user为表别名如表pre_user as user 这边用user而非带前缀的原表名)
array|int|string $value
string $operator 操作符

Return Value

$this

at line 527
mixed getColumnsAndClear()

获取columns属性中的值并清空

Return Value

mixed

at line 543
$this join(string|array $table, string $on, mixed $tablePrefix = null)

join内联结

Parameters

string|array $table 表名 要取别名时使用 [不带前缀表名 => 别名]
string $on 联结的条件 如:'c.cid = a.cid'
mixed $tablePrefix 表前缀

Return Value

$this

at line 564
$this leftJoin(string|array $table, string $on, mixed $tablePrefix = null)

leftJoin左联结

Parameters

string|array $table 表名 要取别名时使用 [不带前缀表名 => 别名]
string $on 联结的条件 如:'c.cid = a.cid'
mixed $tablePrefix 表前缀

Return Value

$this

at line 585
$this rightJoin(string|array $table, string $on, mixed $tablePrefix = null)

rightJoin右联结

Parameters

string|array $table 表名 要取别名时使用 [不带前缀表名 => 别名]
string $on 联结的条件 如:'c.cid = a.cid'
mixed $tablePrefix 表前缀

Return Value

$this

at line 597
protected filterUnionSql($sql)

Parameters

$sql

at line 614
protected string parseOn(string $table, array $on)

解析联结的on参数

Parameters

string $table 要联结的表名
array $on ['on条件1', 'on条件2' => true] on条件为数字索引时多条件默认为and为非数字引时 条件=>true为and 条件=>false为or

Return Value

string

at line 638
reset(bool $must = false)

orm参数重置

Parameters

bool $must 是否强制重置

at line 673
protected clearBindParams()

清空绑定的参数

at line 685
array getBindParams()

获取pdo绑定的参数

Return Value

array

at line 695
$this resetAndClear()

重置所有orm参数及绑定

Return Value

$this

at line 709
protected string arrToCondition(array $arr)

SQL语句条件组装

Parameters

array $arr 要组装的数组

Return Value

string

at line 771
protected array parseKey(string $key, bool $and = true, bool $noCondition = false, bool $noTable = false)

SQL语句条件组装

Parameters

string $key eg: 'forum-fid-1-uid-2'
bool $and 多个条件之间是否为and true为and false为or
bool $noCondition 是否为无条件操作 set/delete/update操作的时候 condition为空是正常的不报异常
bool $noTable 是否可以没有数据表 当delete/update等操作的时候已经执行了table() table为空是正常的

Return Value

array eg: ['forum', "id = '1' AND uid= '2'"]

at line 799
mixed getCacheVer(string $table)

根据表名获取cache版本号

Parameters

string $table

Return Value

mixed

at line 818
setCacheVer(string $table)

设置cache版本号

Parameters

string $table

at line 840
__destruct()

析构函数

at line 850
protected bool isEntityModel()

判断当前查询是否属于实体模型

Return Value

bool