首页 > 编程知识 正文

php更新数据库字段的函数是,thinkphp数据表调用分析

时间:2023-05-04 03:32:13 阅读:154977 作者:362

在tp5上进行项目时,因为使用了按库划分的表,所以此时的事务需要分阶段提交

第一个是最简单事务的单个数据库

/** *常规事务* return JSON */publicfunctiondemo 01 () /事务Db:startTrans ) ); try{ //数据db :3360表(article ) -插入) ) (title )=(测试事务) ); Db:commit (; 返回JSON ([ ' error _ code '=0,' msg'='success' ] ); }catch(exception$e ) { Db:rollback ); returnJSON(['error_code'=400,' msg'=$e -getMessage ) ]; }第二,使用存储库表拆分多个数据库

/** *数据库事务* return JSON */publicfunctiondemo 02 () /打开缺省数据库的事务Db:startTrans; //指定的数据库类型://用户名:密码@数据库地址:数据库端口/数据库名称#字符集db:3360connect('MySQL://root 3360 root @ 127.0.0.133603303000 try {//插入数据db:3360table(article )-insert ) ) ) title )=)分布式回滚db :连接(MySQL ://root : root @ 127.0.0.133603306/laravel # utf8 )-table ) shop _ order//db :连接(MySQL ://root : root @ 127.0.0.133603306/laravel # utf8 ) )- commit; 返回JSON ([ ' error _ code '=0,' msg'='success' ] ); }回滚缓存(exception $ e ) db :卷回; db : connect (' MySQL ://root : root @ 127.0.0.133603306/laravel # utf8 ' )- rollback; returnJSON(['error_code'=400,' msg'=$e - getMessage ) ]; }第三种使用模型事务

? PHP/* * * createdbyphpstorm.* user : administrator * date :2019/10/6 * time 336011336020 */namespace appind DDD class OrderModel extends Model { //绑定表protected $table='shop_order '; 当前模型的数据库连接//protected $connection=[ ////数据库类型//'type'='mysql ', //服务器地址//设置' hostname '=' 127.0.0.1 '//数据库名称//'database'='laravel ',//数据库用户名//' use

/ // 数据库编码默认采用utf8 // 'charset' => 'utf8', // // 数据库表前缀 // 'prefix' => '', // // 数据库调试模式 // 'debug' => false, //]; public function __construct($data = []) { // 这样可以动态更改模型的数据库连接 可以使用不同的数据 $this -> connection = [ // 数据库类型 'type' => 'mysql', // 服务器地址 'hostname' => '127.0.0.1', // 数据库名 'database' => 'laravel', // 数据库用户名 'username' => 'root', // 数据库密码 'password' => 'root', // 数据库编码默认采用utf8 'charset' => 'utf8', // 数据库表前缀 'prefix' => '', // 数据库调试模式 'debug' => false, ]; parent::__construct($data); }} <?php/** * Created by PhpStorm. * User: Administrator * Date: 2019/10/6 * Time: 11:20 */namespace appindexmodel;use thinkModel;class DetailModel extends Model { // 绑定表 protected $table = 'shop_detail'; 设置当前模型的数据库连接 //protected $connection = [ // // 数据库类型 // 'type' => 'mysql', // // 服务器地址 // 'hostname' => '127.0.0.1', // // 数据库名 // 'database' => 'laravel', // // 数据库用户名 // 'username' => 'root', // // 数据库密码 // 'password' => 'root', // // 数据库编码默认采用utf8 // 'charset' => 'utf8', // // 数据库表前缀 // 'prefix' => '', // // 数据库调试模式 // 'debug' => false, //]; public function __construct($data = []) { $this -> connection = [ // 数据库类型 'type' => 'mysql', // 服务器地址 'hostname' => '127.0.0.1', // 数据库名 'database' => 'laravel', // 数据库用户名 'username' => 'root', // 数据库密码 'password' => 'root', // 数据库编码默认采用utf8 'charset' => 'utf8', // 数据库表前缀 'prefix' => '', // 数据库调试模式 'debug' => false, ]; parent::__construct($data); }} /** * 分布式事务 使用模型 多个模型 只需一个模型开启事务即可 * return json */ public function demo03(){ // 开启事务 多个模型 只需要开启一个即可 $orderModel = new OrderModel; $orderModel -> startTrans(); try{ $detailModel = new DetailModel; // 新增数据 $orderModel -> order_number = date('YmdHis'); $orderModel -> save(); // throw new Exception('回滚'); // 新增数据 $detailModel -> detail = time(); $detailModel -> save(); // 提交事务 $orderModel -> commit(); return json([ 'error_code' => 0, 'msg' => 'success', ]); }catch (Exception $e){ // 事务回滚 $orderModel -> rollback(); return json([ 'error_code' => 400, 'msg' => $e -> getMessage() ]); } }

参考链接:https://www.kancloud.cn/manual/thinkphp5/118059

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。