10。数据库的数据新增
三种方式:1.单数据新增。2.批量数据新增。3.save()新增
一.单数据新增
1.使用insert()防法可以向数据表添加一条数据,更多的字段采用默认
$data = [
'username'=>'辉夜',
'password'=>'123',
'gender'=>'女',
'email'=>'[email protected]' ,
'price'=>90,
'details'=>'123'
];
Db::name(‘user‘)->insert( $data);
2.如果新增成功,insert()方法会返回一个1值;
return Db::name(‘user‘)->insert( $data);
3.如果你添加一个不存在的字段数据,会抛出一个异常Exception;
4.如果想强行新增抛弃不存在的字段数据,则使用strick(false)方法,忽略异常;
Db::name('user‘)->strict(false)->insert( $data);
...
5.如果我们采用的数据库是mysql,可以支持replace 写入;
6. insert和 replace 写入的区别,前者表示表中存在主键相同则报错,后者则修改
Db::name('user')->replace()->insert($data) ;
return Db::getLastsql();
7.使用insertGetId()方法,可以在新增成功后返回当前数据ID;
return Db::name('user')->insertGetId($data);
+++
二.批量数据新增
1.使用insertAl1()方法,可以批量新增数据,但要保持数组结构一致;
$data = [
[
'username'=>'辉夜',
'password'=>'123',
'gender'=>'女',
'email'=>'[email protected]' ,
'price'=>90,
'details'=>'123'
],
[
'username'=>'辉夜',
'password'=>'123',
'gender'=>'女',
'email'=>'[email protected]' ,
'price'=>90,
'details'=>'123'
]
];
return Db::name('user')->insertAll($data);
返回2,新增成功
...
2.批量新增也支持replace()方法,添加后改变成replace into;
Db::name('user')->replace()->insertAl1($data);
...
三. save()新增
1. save()方法是一个通用方法,可以自行判断是新增还是修改(更新)数据;
2. save()方法判断是否为新增或修改的依据为,是否存在主键,不存在即新增;
Db::name('user')->save($data);
===
11。数据库的修改删除
一.数据修改
1.使用update()方法来修改数据,修改成功返回影响行数,没有修改返回0;
$data = ['username '=>’李白'];
return Db::name('user')->where('id',38)->update($data);
2.如果修改数据包含了主键信息,比如 id,那么可以省略掉where条件;
$data=['id'=>231,'username'=>'李黑'];
return Db::name('user')->update($data);
返回1
如果修改和原来的一致,返回0,无修改。
3.如果想让一些字段修改时执行sQL函数操作,可以使用exp()方法实现;
Db::name('user')->where('id',232)
->exp('email','UPPER(email)')
->update();
4.如果要自增/自减某个字段,可以使用inc/dec方法,并支持自定义步长;
Db::name('user')->where('id', 232)
->inc('price')
->dec('status',2)
->update();
5.一个更加简单粗暴灵活的方式,使用静态:: raw()方法实现3,4点的内容;
Db::name('user') ->where('id', 232)
->update([
'email'=>Db::raw('UPPER(gmail)'),
'price'=>Db::raw('price +1')
'status'=>Db::raw('status - 2')]
);
6.使用save()方法进行修改数据,这里必须指定主键才能实现修改功能;
Db::name('user')->where('id',232)->save(['username' =>'李白']);
二.数据删除
1.极简删除可以根据主键直接删除,删除成功返回影响行数,否则0;
return Db::name('user') ->delete(51);
2.根据主键,还可以删除多条记录;
return Db::name('user')->delete([48,49, 50]);
返回3(新版本没问题,老版本返回有问题)
3.正常情况下,通过where()方法来删除;
Db::name('user')->where('id', 47)->delete();
4.通过true参数删除数据表所有数据,我还没测试,大家自行测试下;
Db::name('user')->delete(true);
Tag: Thinkphp Thinkphp笔记