3 Db类:增删改

一 添加数据

一维数组:$data = ['name'=>'浙江','e_name'=>'zhejiang','pid'=>0];

1)sava($data) 方法添加

$res = Db::name('bbs_category')->save($data); 
//成功:返回受影响的行数 一般返回1
//失败:抛出异常

2)insert($date) 方法添加

$res = Db::name('bbs_category')->insert($data);
//成功:返回受影响的行数 一般返回1
//失败:抛出异常

3)获取自增ID

$res = Db::name('bbs_category')->insertGetId($data);

4)添加时不存在的字段直接过滤掉

Db::name('user')->strict(false)->insert($data);

5)支持replace写入

mysql数据库支持 replace 写入

数据中name子段是唯一索引,重复数据默认是插入不了的
我们用replace()方法,它会把以前的那条数据删除掉,然后重新写入
$data
= ['name'=>'浙江', 'e_name' => 'zhejiang']; $res = Db::name('bbs_category')->replace()->insert($data);
var_dump($res);
//打印:int(2)

 6 )添加多条数据  insertAll();

//1 数据必须是二维数组
$data = [
    ['name'=>'浙江','e_name'=>'zhejiang','pid'=>0],
    ['name'=>'江苏','e_name'=>'jiangsu','pid'=>0],
    ['name'=>'上海','e_name'=>'shanghai','pid'=>0],
    ['name'=>'武汉','e_name'=>'wuhan','pid'=>0]
];
//2 确保要批量添加的数据字段是一致的
Db::name('bbs_category')->insertAll($data);

//3 如果数据量非常大,可以分批次执行 
$res = Db::name('bbs_category')->limit(100)->insertAll($data);//用limit设置一次批量执行的条数 

  

二 更新数据

1)sava()方法

$data = ['name'=>'浙江','e_name'=>'zj','pid'=>0,'id'=>1];
$res = Db::name('bbs_category')->save($data);//数据中有主键值就执行更新操作

2)update()方法

//成功失败都返回受影响的行数

1、基础语法
$data = ['name'=>'浙江','e_name'=>'zj','pid'=>0];
Db::name('bbs_category')->where('id',25)->update($data);
  
2、数据中包含主键
$data = ['name'=>'浙江','e_name'=>'zj','pid'=>0,'id'=>25];
Db::name('bbs_category')->update($data);//不需要写更新条件

  3)需要使用sql函数 exp()

//1 把id为55的数据 e_name的值 修改为大写
Db::name('bbs_category')
    ->where('id',55)
    ->exp('e_name','UPPER(e_name)')
    ->update();
//2 最终生成的sql
update `think_user` set `name` = UPPER(name) where `id` = 1
3、执行的结果

 4)自增inc() 自减dec()

1、把id为55的数据 status值加1
Db::name('bbs_category')
->where('id',55)
->inc('status',1)//第二个参数为步长,不传默认为1
->update();

2、最终的sql
update `think_user` set `score` = `score` + 1 where `id` = 1;

 5) raw()跟新

 

 

三 删除数据

1)根据主键删除

$res = Db::name('bbs_category')->delete(60);//传入一个id值
//sql:delete from `think_user` where `id` = 1;
$res = Db::name('bbs_category')->delete([60,70]);//传入多个id值 //sql:delete from `bbs_category` where `id` in(60,70)

 2)条件删除

$res = Db::name('bbs_category')->where('id',55)->delete();
//sql:sql:delete from `bbs_category` where id = 1;
$res = Db::name('bbs_category')->where('id','>',70)->delete(); //sql: delete from `bbs_category` where `id` > 70;

 3)无条件删除所有数据

Db::name('bbs_category')->delete(true);//慎重使用
delete from `think_user`;

 

posted @ 2020-12-30 10:04  棉花糖88  阅读(199)  评论(0)    收藏  举报