查询 - MonGDCH/mon-orm GitHub Wiki

查询方法及使用

直调方法

SQL查询

执行SQL查询语句, 返回查询结果或PDO结果集

query( string $sql [, array $bind, boolean $pdo ] ) : result|PDO

参数说明

参数名 类型 是否必须 描述 默认值
sql string 执行查询的sql语句
bind array 执行查询的sql语句中绑定的参数
pdo boolean 是否返回PDO结果集实例 false

Demo


// 直接调用
$res = Db::query('SELECT * FROM test');

// 参数绑定
$res = Db::query('SELECT * FROM test WHERE `name` = ? LIMIT ?', ['name', 1]);

$res = Db::query('SELECT * FROM test WHERE `name` = :name LIMIT :limit', ['name' => 'name', 'limit' => 1]);

执行命令指令

执行SQL指令语句,返回影响行数

execute( string $sql [, array $bind] ) : numRows

参数说明

参数名 类型 是否必须 描述 默认值
sql string 执行的sql语句
bind array 执行的sql语句中绑定的参数

Demo


// 直接调用
$res = Db::execute('UPDATE test SET `name` = 1');

// 参数绑定
$res = Db::execute('UPDATE test SET `name` = ? WHERE `id` = ?', ['name', 1]);

$res = Db::execute('UPDATE test SET `name` = :name WHERE `id` = :id', ['name' => 'name', 'id' => 1]);

事务

  • 使用事务数据表必须为innodb类型
  • 事务支持嵌套及状态回滚

开启mysql事务查询

startTrans() : void

提交事务

commit() : void

事务回滚

rollBack() : void

Demo


Db::startTrans();

try{
    $save = Db::table('test')->insert([
        'name'	=> mt_rand(1, 100) . 'b',
        'update_time' => $_SERVER['REQUEST_TIME'],
        'create_time' => $_SERVER['REQUEST_TIME'],
    ]);
    if(!$save){
        Db::rollBack();
        return false;
    }
    Db::commit();
}catch(DbException $e){
    Db::rollBack();
}

获取表字段信息

获取数据库表字段信息

getFields( string $table ) : array

参数说明

参数名 类型 是否必须 描述 默认值
table string 查看的表

Demo

$info = Db::getFields('test');

查看库表信息

查看数据库表信息

getTables( string $database ) : array

参数说明

参数名 类型 是否必须 描述 默认值
database string 查看的数据库

Demo

$info = Db::getTables('demo');

SQL分析

分析执行的SQL性能

explain( string $sql ) : array

参数说明

参数名 类型 是否必须 描述 默认值
sql string 要分析的sql语句

Demo

$info = Db::explain('SELECT * FROM `test`');

关闭数据库链接

断开链接的数据

close() : void

Demo

Db::close();

获取影响行数

获取影响行数

getNumRows() : int

Demo

Db::getNumRows();

获取最后写入数据的ID

获取最后写入数据的ID

getLastInsID( [ string $pk ] ) : array

参数说明

参数名 类型 是否必须 描述 默认值
pk string 自增主键名

Demo

$id = Db::getLastInsID();

获取最后执行的SQL

获取最后执行的SQL

getLastSql() : string

Demo

$sql = Db::getLastSql();

获取查询失败结果

获取查询失败结果

getQueryError() : string

Demo

$queryError = Db::getQueryError();

链式操作

查询数据

查询记录,返回所有结果

select() : array

Demo


// 链接操作拼接SQL进行查询,返回二维数组
$data = Db::table('test')->where('status', 1)->select();

查询一条数据

查询记录,只返回一条记录

find() : array

Demo


// 链接操作拼接SQL进行查询,返回一维数组
$data = Db::table('test')->where('status', 1)->find();

更新数据

更新数据,返回影响行数, 更新数据必须存在where条件

update( [ array $data ] ) : int

参数说明

参数名 类型 是否必须 描述 默认值
data array 更新的数据

Demo

$save = Db::table('test')->where(['id' => 1])->update(['name' => 'uname']);

字段值自增

字段值自增,返回影响行数, 更新数据必须存在where条件且自增字段必须为整形

setInc( string|array $field [, int $step ] ) : int

inc( string|array $field [, int $step ] ) : Query

参数说明

参数名 类型 是否必须 描述 默认值
field string 自增的字段
step int 自增的步长 1

Demo


$save = Db::table('test')->where(['id' => 1])->setInc('age');

$save = Db::table('test')->where(['id' => 1])->setInc('age', 2);

// 使用inc方法
$save = Db::table('test')->where(['id' => 1])->inc('age', 1)->update();

字段值自减

字段值自减,返回影响行数, 更新数据必须存在where条件且自减字段必须为整形

setDec( string|array $field [, int $step ] ) : int

dec( string|array $field [, int $step ] ) : Query

参数说明

参数名 类型 是否必须 描述 默认值
field string 自减的字段
step int 自减的步长 1

Demo


$save = Db::table('test')->where(['id' => 1])->setDec('age');

$save = Db::table('test')->where(['id' => 1])->setDec('age', 2);

// 使用dec方法
$save = Db::table('test')->where(['id' => 1])->dec('age', 1)->update();

写入数据

写入数据,返回影响行数或自增ID

insert( [ array $data, boolean $replace, boolean $getLastInsID, string $key ] ) : int

参数说明

参数名 类型 是否必须 描述 默认值
data array 写入的数据
replace boolean 是否为replace写入 false
getLastInsID boolean 是否返回最后自增的ID false
key string 自增键名 null

Demo


$save = Db::table('test')->data(['name' => 'bname'])->insert();

$save = Db::table('test')->insert(['name' => 'cname']);

写入多条数据

写入多条数据,返回影响行数

insertAll( [ array $data, boolean $replace ] ) : int

参数说明

参数名 类型 是否必须 描述 默认值
data array 写入的数据
replace boolean 是否为replace写入 false

Demo


$save = Db::table('test')->data([
    ['name' => 'aa'],
    ['name' => 'bb'],
])->insertAll();

$save = Db::table('test')->insertAll([
    ['name' => 'cc'],
    ['name' => 'dd'],
]);

删除数据

删除数据,返回影响行数, 删除数据必须存在where条件

delete() : int

Demo

$save = Db::table('test')->where(['id' => 1])->delete();

Count查询

查询记录总条数

count( [ string $field ] ) : int

参数说明

参数名 类型 是否必须 描述 默认值
field string 键名 *

Demo

$save = Db::table('test')->count();

sum查询

查询记录总和

sum( string $field  ) : float

参数说明

参数名 类型 是否必须 描述 默认值
field string 键名

Demo

$save = Db::table('test')->sum('age');

min查询

查询记录最小值

min( string $field  ) : float

参数说明

参数名 类型 是否必须 描述 默认值
field string 键名

Demo

$save = Db::table('test')->min('age');

max查询

查询记录最大值

max( string $field  ) : float

参数说明

参数名 类型 是否必须 描述 默认值
field string 键名

Demo

$save = Db::table('test')->max('age');

svg查询

查询记录平均值

svg( string $field  ) : float

参数说明

参数名 类型 是否必须 描述 默认值
field string 键名

Demo

$save = Db::table('test')->svg('age');

SQL调试模式

获取即将执行的SQL语句,但不执行

debug() : Query

Demo

$sql = Db::table('test')->debug()->select(');
echo $sql;

获取PDO结果集

获取PDO结果集

getObj() : Query

Demo

$pdo = Db::table('test')->getObj()->select(');
var_dump($pdo);

指定操作的表

table( string $table  ) : Query

参数说明

参数名 类型 是否必须 描述 默认值
table string 操作表名

Demo

$save = Db::table('test')->where(['id' => 1])->select();

指定操作的表的别名

alias( string $alias  ) : Query

参数说明

参数名 类型 是否必须 描述 默认值
alias string 操作表名的别名

Demo

$save = Db::table('test')->alias('a')->where(['id' => 1])->select();

指定查询的字段

field( string|array $field  ) : Query

参数说明

参数名 类型 是否必须 描述 默认值
field string|array 指定要查询的字段

Demo


$save = Db::table('test')->alias('a')->field('name, age')->where(['id' => 1])->select();

$save = Db::table('test')->field(['name', 'age'])->select();

Limit操作

limit( int $offset [, int $limit ]  ) : Query

参数说明

参数名 类型 是否必须 描述 默认值
offset int 查询的记录数或起始查询记录数
limit int 查询的记录数

Demo

$save = Db::table('test')->where('age', '>', 1)->limit(5)->select();

$save = Db::table('test')->where('age', '>', 1)->limit(5, 5)->select();

order by操作

order( string $field [, string $order ]  ) : Query

参数说明

参数名 类型 是否必须 描述 默认值
field string 进行排序的字段
order string 排序的方式

Demo

$save = Db::table('test')->where('age', '>', 1)->order('id desc')->limit(5)->select();

$save = Db::table('test')->where('age', '>', 1)->order('id', 'desc')->limit(5, 5)->select();

group查询

group( string $field  ) : Query

参数说明

参数名 类型 是否必须 描述 默认值
field string 指定要查询的字段

Demo

$save = Db::table('test')->group('age')->select();

having查询

having( string $field  ) : Query

参数说明

参数名 类型 是否必须 描述 默认值
field string 指定要查询的字段

Demo

$save = Db::table('test')->group('age')->having('age > 1')->select();

join查询

join( string $join [, string $condition, string $type ] ) : Query

参数说明

参数名 类型 是否必须 描述 默认值
join string join关联的表名
condition string 关联的条件
type string join关联的方式 INNER

Demo

$save = Db::table('test a')->join('demo b', 'a.id = b.id')->select();
$save = Db::table('test a')->join('demo b', 'a.id = b.id', 'LEFT')->select();

where查询

使用 AND 的形式进行where条件的拼装

where( string $field [, string $op, string $condition ] ) : Query

参数说明

参数名 类型 是否必须 描述 默认值
field string 查询字段或者查询条件
condition string 查询条件 null
op string 查询表达式 INNER

Demo

// where 条件 ID = 1 的多种写法
$save = Db::table('test')->where('id = 1')->select();
$save = Db::table('test')->where('id', 1)->select();
$save = Db::table('test')->where('id', '=', 1)->select();
$save = Db::table('test')->where(['id' => 1])->select();
$save = Db::table('test')->where(['id' => ['=', 1]])->select();

where or查询

使用 OR 的形式进行where条件的拼装

whereOr( string $field [, string $op, string $condition ] ) : Query
  • 与where方法用法一致

where xor查询

使用 XOR 的形式进行where条件的拼装

whereXor( string $field [, string $op, string $condition ] ) : Query
  • 与where方法用法一致

like查询

whereLike( string $field, string $condition [, string $logic ] ) : Query

参数说明

参数名 类型 是否必须 描述 默认值
field string 查询字段
condition string 查询条件
logic string 拼接形式,默认AND AND

Demo

$save = Db::table('test')->whereLike('name', '%a%')->select();
$save = Db::table('test')->whereLike('name', 'a%', 'OR')->select();

not like查询

whereNotLike( string $field, string $condition [, string $logic ] ) : Query
  • 与whereLike方法用法一致

Between查询

whereBetween( string $field, string $condition [, string $logic ] ) : Query
  • 与whereLike方法用法一致

not between查询

whereNotBetween( string $field, string $condition [, string $logic ] ) : Query
  • 与whereLike方法用法一致

null 查询

whereNull( string $field [, string $logic ] ) : Query

参数说明

参数名 类型 是否必须 描述 默认值
field string 查询字段
logic string 拼接形式,默认AND AND

Demo

$save = Db::table('test')->whereNull('name')->select();
$save = Db::table('test')->whereNull('name', 'OR')->select();

not null查询

whereNotNull( string $field [, string $logic ] ) : Query
  • 与whereNull方法用法一致

exists查询

whereExists( string $field [, string $logic ] ) : Query
  • 与whereNull方法用法一致

not exists查询

whereNotExists( string $field [, string $logic ] ) : Query
  • 与whereNull方法用法一致

in查询

whereIn( string $field, string $condition [, string $logic ] ) : Query

参数说明

参数名 类型 是否必须 描述 默认值
field string 查询字段
condition string 查询条件
logic string 拼接形式,默认AND AND

Demo

$save = Db::table('test')->whereIn('name', ['a', 'b'])->select();
$save = Db::table('test')->whereIn('name', 'a, b')->select();

not in查询

whereNotIn( string $field [, string $logic ] ) : Query
  • 与whereIn方法用法一致

设置操作数据

data( string|array $field, [, string $value ] ) : Query

参数说明

参数名 类型 是否必须 描述 默认值
field string|array 设置的数据
value string 设置的值

Demo

$save = Db::table('test')->data('name', 'a')->where('id', 2)->update();
$save = Db::table('test')->data(['name' => 'b'])->whereIn('name', 'a, b')->update();

lock操作

lock( [ boolean $lock ] ) : Query

参数说明

参数名 类型 是否必须 描述 默认值
lock boolean 是否锁

Demo

$save = Db::table('test')->lock(true)->data('name', 'a')->where('id', 2)->update();

union 操作

链接查询

union( string $union [, boolean $all ] ) : Query

参数说明

参数名 类型 是否必须 描述 默认值
union string union的查询
all boolean 是否 union all false

Demo

$save = Db::table('test')->union('SELECT * FROM DEMO')->select();

force 操作表名

指定强制索引

force(string $force) : Query

Demo

$save = Db::table('test')->force('status')->select();