2017 © Pedro Peláez
 

library db

数据库管理组件提供了丰富的数据操作功能,使用我们在开发中快速的管理数据

image

houdunwang/db

数据库管理组件提供了丰富的数据操作功能,使用我们在开发中快速的管理数据

  • Monday, March 26, 2018
  • by houdunwang
  • Repository
  • 1 Watchers
  • 0 Stars
  • 1,699 Installations
  • PHP
  • 8 Dependents
  • 0 Suggesters
  • 1 Forks
  • 0 Open issues
  • 16 Versions
  • 4 % Grown

The README.md

数据库

数据库管理组件提供了丰富的数据操作功能,使用我们在开发中快速的管理数据。, (*1)

安装组件

使用 composer 命令进行安装或下载源代码使用。, (*2)

composer require houdunwang/db

HDPHP 框架已经内置此组件,无需要安装, (*3)

开始使用

设置全局配置

\houdunwang\config\Config::set( 'database', [
    //调试模式
    'debug'    => true,
    //读库列表
    'read'     => [ ],
    //写库列表
    'write'    => [ ],
    //表字段缓存目录
    'cacheDir' => 'storage/field',
    //开启读写分离
    'proxy'    => false,
    //主机
    'host'     => 'localhost',
    //类型
    'driver'   => 'mysql',
    //帐号
    'user'     => 'root',
    //密码
    'password' => 'admin888',
    //数据库
    'database' => 'demo',
    //表前缀
    'prefix'   => ''
] );

重设所有配置

$config='配置项';//请参考上面的配置项
Db::config($config);

设置独立配置

Db::config('password','admin888');

核心操作

数据库查询构造器 (query builder) 提供方便、流畅的接口,用来建立及执行数据库查找语法。在你的应用程序里面,它可以被使用在大部分的数据库操作,而且它在所有支持的数据库系统上都可以执行。, (*4)

注意: HDPHP 查询构造器使用 PDO 参数绑定,以保护应用程序免于 SQL 注入,因此传入的参数不需额外转义特殊字符。, (*5)

预准备操作

组件支持使用预准备查询,可以完全避免SQL注入。, (*6)

修改操作

\houdunwang\db\Db::execute("update news set total=:total where id=:id",[':total'=>5,':id'=>1]);

查询操作

使用标识名
Db::query("select * from site where siteid=:siteid AND name=:name",
[':siteid'=>36,':name'=>'后盾']);
使用占位符
Db::query("select * from news where title like ?",['%后盾网%']) 

常用操作

查找

下面是使用原生 SQL 语句进行查询,更灵活的方式请查看 查询构造器 部分, (*7)

Db::table('user')->where('id','>',1)->get();

新增

Db::table('user')->insert(['username'=>'向军','qq'=>'2300071698']);
//数组数据会过滤掉非法字段

不存在时新增

$user =$User->firstOrCreate(['username' => '李四'],['username'=>'李四','age'=>22]);

//如果不存在叫 “李四” 的用户就新增用户

替换

Db::table('user')->replace(['id'=>1,'username'=>'向军','qq'=>'2300071698']);
//如果字段中有主键或唯一索引,并且数据存在,replace操作将执行替换当前记录的操作

添加并获取自增主键

如果数据表有自动递增的ID,可以使用 insertGetId 添加数据并返回该 ID, (*8)

Db::table('user')-> insertGetId(['username'=>'向军','qq'=>'2300071698']);

更新

Db::table('user')->where("id",1)->update(['username'=>'后盾网']);
//数组数据会过滤掉非法字段

删除

Db::table('user')->where('id',1)->delete();
//删除指定的主键值
Db::table('user')->delete(1);
Db::table('user')->delete([2,3,5]);

自增一个字段值

将total字段值加2, (*9)

Db::table("user")->where('id',1)->increment('total',2);

自减一个字段值

Db::table("user")->where('id',1)->decrement('total',2);
将total字段减少2

获取自增主键

$db = Db::table( 'news' );
$db->insert( [ 'title' => '后盾网' ] );
echo $db->getInsertId();

获取受影响条数

$db = Db::table( 'news' );
$db->update( [ 'title' => '后盾人' ] );
echo $db->getAffectedRow();

查询构造器

[TOC], (*10)

从数据表中取得所有的数据列

Db::table('user')->get();

取得指定的字段

Db::table('user')->get(['username','age']);

从数据表中取得单一数据列

Db::table('user')->where('username','向军')->first();

//取出指定主键的值
Db::table('user')->first(2);

从数据表中取得单一数据列的单一字段

Db::table('user')->where('username', '向军')->pluck('username');

//返回第一条记录的 username 字段值

取得单一字段值的列表

Db::table('user')->lists('username');

//满足条件记录的所有username字段
[
    [0] => admin
    [1] => hdxj
]

返回一维数组,第一个字段做为键名使用,第 2 个字段做为键值

Db::table('user')->lists('id,username'); 

//id 字段做为键名使用
[
    [1] => admin
    [2] => hdxj
]

多个字段返回二维数组,第一个字段值做为键名使用,其余字段做为键值

Db::table('user')->lists('id,username,age');

//返回值如下
[
    [1] => [
            [id] => 1
            [username] => admin
            [age] => 22
           ]

    [2] => [
            [id] => 2
            [username] => hdxj
            [age] => 67
           ]
]

指定查询结果字段

Db::table('user')->field('username AS name,age')->get();

或

Db::table('user')->field(['username','age'])->get();

根据某个字段查询

Db::table('user')->getByName("hdphp");
//返回一条记录

增加查询子句到现有的查询中

$db = Db::table('user')->field('username AS name','age','id');
$db->where('id','>',2)->get();

使用 where 及运算符

Db::table('user')->where('id','>',1)->get();
Db::table('user')->where('id','>',1)->where('id','<',10)->get();

使用andwhere

Db::table('user')->where('id','>',1)->andwhere('id','<',10)->get();

使用orwhere

Db::table('user')->where('id','>',1)->orwhere('id','<',10)->get();

使用 logic 条件连接符

Db::table('user')->where('id','>',1)->logic('or')->where('id','<',22)->get();

预准备whereRaw

Db::table('user')->whereRaw('age > ? and username =?', [1,'admin'])->get();

使用 whereBetween

Db::table('user')->whereBetween('id',[10,30])->get();

使用 WhereNotBetween

Db::table('user')->whereNotBetween('id',[10,30])->get();

使用 WhereIn

Db::table('user')->whereIn('id',[2,3,9])->get();

使用 WhereNotIn

Db::table('user')->whereNotIn('id',[3,5,6])->get();

使用 WhereNull

Db::table('user')->whereNull('username')->get();

使用 WhereNotNull

Db::table('user')->whereNotNull('id')->get();

指定条件关系

Db::table('user')->where('id','>',1)->logic('AND')->whereBetween('id',[1,10])->get();

排序(Order By)

Db::table('user')->orderBy('id','DESC')->get();
Db::table('user')->orderBy('id','DESC')->orderBy('rank','ASC')->get();
//多个排序条件

分组GROUP BY

Db::table('user')->groupBy('age')->get();

分组筛选HAVING

Db::table('user')->groupBy('age')->having('count(sex)','>',2)->get();

取部分数据LIMIT

Db::table('user')->limit(2)->get();
Db::table('user')->limit(2,5)->get();

聚合

Db::table("user")->count('id');
Db::table("user")->max('id');
Db::table("user")->min('id');
Db::table("user")->avg('id');
Db::table("user")->sum('id');

JOIN多表关联

多表关联INNER JOIN

Db::table('user')
    ->join('class','user.cid','=','class.cid')
    ->join('contacts','user.id','=','contacts.uid')
    ->get()

多表关联LEFT JOIN

Db::table('user')->leftJoin('class','user.cid','=','class.cid')->get();

多表关联RIGHT JOIN

Db::table('user')->rightJoin('class','user.cid','=','class.cid')->get();

日志记录

可以在内存里访问这次请求中所有的查找语句,用于分析SQL执行的情况。, (*11)

获取查询日志

Db::getQueryLog();

分页处理

组件可以产生基于当前页面的智能「范围」链接,所产生的 HTML 兼容 Bootstrap CSS 框架., (*12)

示例

$users = Db::table( 'user' )->paginate(3);
foreach ( $users as $f ) {
    p( $f['username'] );
}
//显示页码链接
dd($users->links());      

paginate指令说明, (*13)

paginate( $row=10, $pageNum = 8 );
//$row 显示条数据
//$pageNum 页码数量

The Versions

26/03 2018

dev-master

9999999-dev http://www.houdunwang.com/

数据库管理组件提供了丰富的数据操作功能,使用我们在开发中快速的管理数据

  Sources   Download

MIT

The Requires

 

The Development Requires

by 后盾网向军

hdphp houdunwang 后盾网 后盾人 向军老师 数据库管理

26/03 2018

v1.0.43

1.0.43.0 http://www.houdunwang.com/

数据库管理组件提供了丰富的数据操作功能,使用我们在开发中快速的管理数据

  Sources   Download

MIT

The Requires

 

The Development Requires

by 后盾网向军

hdphp houdunwang 后盾网 后盾人 向军老师 数据库管理

27/02 2018

v1.0.42

1.0.42.0 http://www.houdunwang.com/

数据库管理组件提供了丰富的数据操作功能,使用我们在开发中快速的管理数据

  Sources   Download

MIT

The Requires

 

The Development Requires

by 后盾网向军

hdphp houdunwang 后盾网 后盾人 向军老师 数据库管理

05/01 2018

v1.0.41

1.0.41.0 http://www.houdunwang.com/

数据库管理组件提供了丰富的数据操作功能,使用我们在开发中快速的管理数据

  Sources   Download

MIT

The Requires

 

The Development Requires

by 后盾网向军

hdphp houdunwang 后盾网 后盾人 向军老师 数据库管理

12/12 2017

v1.0.40

1.0.40.0 http://www.houdunwang.com/

数据库管理组件提供了丰富的数据操作功能,使用我们在开发中快速的管理数据

  Sources   Download

MIT

The Requires

 

The Development Requires

by 后盾网向军

hdphp houdunwang 后盾网 后盾人 向军老师 数据库管理

04/11 2017

v1.0.39

1.0.39.0 http://www.houdunwang.com/

数据库管理组件提供了丰富的数据操作功能,使用我们在开发中快速的管理数据

  Sources   Download

MIT

The Requires

 

The Development Requires

by 后盾网向军

hdphp houdunwang 后盾网 后盾人 向军老师 数据库管理

10/10 2017

v1.0.38

1.0.38.0 http://www.houdunwang.com/

数据库管理组件提供了丰富的数据操作功能,使用我们在开发中快速的管理数据

  Sources   Download

MIT

The Requires

 

The Development Requires

by 后盾网向军

hdphp houdunwang 后盾网 后盾人 向军老师 数据库管理

26/06 2017

v1.0.37

1.0.37.0 http://www.houdunwang.com/

数据库管理组件提供了丰富的数据操作功能,使用我们在开发中快速的管理数据

  Sources   Download

MIT

The Requires

 

The Development Requires

by 后盾网向军

hdphp houdunwang 后盾网 后盾人 向军老师 数据库管理

19/06 2017

v1.0.36

1.0.36.0 http://www.houdunwang.com/

数据库管理组件提供了丰富的数据操作功能,使用我们在开发中快速的管理数据

  Sources   Download

MIT

The Requires

 

The Development Requires

by 后盾网向军

hdphp houdunwang 后盾网 后盾人 向军老师 数据库管理

18/06 2017

v1.0.33

1.0.33.0 http://www.houdunwang.com/

数据库管理组件提供了丰富的数据操作功能,使用我们在开发中快速的管理数据

  Sources   Download

MIT

The Requires

 

The Development Requires

by 后盾网向军

hdphp houdunwang 后盾网 后盾人 向军老师 数据库管理

18/06 2017

v1.0.35

1.0.35.0 http://www.houdunwang.com/

数据库管理组件提供了丰富的数据操作功能,使用我们在开发中快速的管理数据

  Sources   Download

MIT

The Requires

 

The Development Requires

by 后盾网向军

hdphp houdunwang 后盾网 后盾人 向军老师 数据库管理

25/03 2017

v1.0.23

1.0.23.0 http://www.houdunwang.com/

数据库管理组件提供了丰富的数据操作功能,使用我们在开发中快速的管理数据

  Sources   Download

MIT

The Requires

 

by 后盾网向军

hdphp houdunwang 后盾网 后盾人 向军老师 数据库管理

15/03 2017

v1.0.22

1.0.22.0 http://www.houdunwang.com/

数据库管理组件提供了丰富的数据操作功能,使用我们在开发中快速的管理数据

  Sources   Download

MIT

The Requires

 

by 后盾网向军

hdphp houdunwang 后盾网 后盾人 向军老师 数据库管理

06/02 2017

v1.0.21

1.0.21.0 http://www.houdunwang.com/

数据库管理组件提供了丰富的数据操作功能,使用我们在开发中快速的管理数据

  Sources   Download

MIT

The Requires

 

by 后盾网向军

hdphp houdunwang 后盾网 后盾人 向军老师 数据库管理

18/01 2017

v1.0.20

1.0.20.0 http://www.houdunwang.com/

数据库管理组件提供了丰富的数据操作功能,使用我们在开发中快速的管理数据

  Sources   Download

MIT

The Requires

 

by 后盾网向军

hdphp houdunwang 后盾网 后盾人 向军老师 数据库管理

12/01 2017

v1.0.19

1.0.19.0 http://www.houdunwang.com/

数据库管理组件提供了丰富的数据操作功能,使用我们在开发中快速的管理数据

  Sources   Download

MIT

The Requires

 

by 后盾网向军

hdphp houdunwang 后盾网 后盾人 向军老师 数据库管理