5ucms论坛

标题: 9 thinkphp 数据库-事务、链式操作 [打印本页]

作者: admin    时间: 2019-5-30 20:40
标题: 9 thinkphp 数据库-事务、链式操作
5、查询构造器
//插入记录
Db::table('tp_data')->insert(['id'=>18,'name'=>'tp5','status'=>1]);
Db::name('data')->insert(['id'=>18,'name'=>'tp5','status'=>1]);
//更新记录
Db::table('tp_data')->where('id',2)->update(['name'=>'hello']);
//查询记录
$list =  Db::table('tp_data')->where('id',2)->select();
//删除数据
Db::table('tp_data')->where('id',2)->delete();

6、DB链式操作
//查询十个满足条件的数据,并按照id倒序排列
$list =  Db::name('data')->where('status',2)->field('id,name')->order('id','desc')->limit(10)->select();
dump($list);

7、事物支持
  1. //几个操作同步进行,如果有异常,同步撤销。如转账操作,A钱少,B钱加,有一个失败,则回滚。
  2. //事务支持,在Mysql数据库中请设置表类型为InnoDB
  3. //把需要执行的事物操作封装到闭包里面即可自动完成事务
  4. Db::transaction(function(){
  5.         Db::table('tp_data')->delete(1);
  6.         Db::table('tp_data')->insert(['id'=>18,'name'=>'tp5','status'=>1]);
  7. });
  8. //手动控制事物的提交
  9. //启动事物
  10. Db::startTrans();
  11. try{
  12.         Db::table('tp_data')->delete(1);
  13.         Db::table('tp_data')->insert(['id'=>18,'name'=>'tp5','status'=>1]);
  14.         //提交事务
  15.         Db::commit(); //不加此行则用于测试,最终不作提交,只判断能否执行
  16.         echo 'try ok!';
  17. } catch (\Exception $e){
  18.         Db::rollback(); //回滚事务
  19.         echo 'fail!back!';
  20. }
复制代码





欢迎光临 5ucms论坛 (http://bbs.5ucms.com/) Powered by Discuz! X3.2