#事务处理 注意事务 数据库要用InnoDB引擎

$c1 = User::connection();

try {
//开启事务
$c1->transaction();
//sql语句
$sql = User::create(
array("name" => "good_nice")
);
//提交事务
$c1->commit(); } catch (\Exception $e) {
//事务回滚
$c1->rollback();
throw $e;
}

  源码 lib/Connection.php

abstract class Connection
{
......
....
..
/**
* Starts a transaction.
*/
public function transaction()
{
if (!$this->connection->beginTransaction())
throw new DatabaseException($this);
} /**
* Commits the current transaction.
*/
public function commit()
{
if (!$this->connection->commit())
throw new DatabaseException($this);
} /**
* Rollback a transaction.
*/
public function rollback()
{
if (!$this->connection->rollback())
throw new DatabaseException($this);
}
......
....
..
}

  #输出sql语句的三种方法

1. User::table()->conn->last_query  #returns last query to the connection

2. User::connection()->last_query    #same as the first

3. User::table()->last_sql     #this will only return the last query sent to the finder functions and will not include association queries

  

PHPActiveRecord 学习三的更多相关文章

  1. HTTP学习三:HTTPS

    HTTP学习三:HTTPS 1 HTTP安全问题 HTTP1.0/1.1在网络中是明文传输的,因此会被黑客进行攻击. 1.1 窃取数据 因为HTTP1.0/1.1是明文的,黑客很容易获得用户的重要数据 ...

  2. TweenMax动画库学习(三)

    目录               TweenMax动画库学习(一)            TweenMax动画库学习(二)            TweenMax动画库学习(三)           ...

  3. Struts2框架学习(三) 数据处理

    Struts2框架学习(三) 数据处理 Struts2框架框架使用OGNL语言和值栈技术实现数据的流转处理. 值栈就相当于一个容器,用来存放数据,而OGNL是一种快速查询数据的语言. 值栈:Value ...

  4. 4.机器学习——统计学习三要素与最大似然估计、最大后验概率估计及L1、L2正则化

    1.前言 之前我一直对于“最大似然估计”犯迷糊,今天在看了陶轻松.忆臻.nebulaf91等人的博客以及李航老师的<统计学习方法>后,豁然开朗,于是在此记下一些心得体会. “最大似然估计” ...

  5. DjangoRestFramework学习三之认证组件、权限组件、频率组件、url注册器、响应器、分页组件

    DjangoRestFramework学习三之认证组件.权限组件.频率组件.url注册器.响应器.分页组件   本节目录 一 认证组件 二 权限组件 三 频率组件 四 URL注册器 五 响应器 六 分 ...

  6. [ZZ] 深度学习三巨头之一来清华演讲了,你只需要知道这7点

    深度学习三巨头之一来清华演讲了,你只需要知道这7点 http://wemedia.ifeng.com/10939074/wemedia.shtml Yann LeCun还提到了一项FAIR开发的,用于 ...

  7. SVG 学习<三>渐变

    目录 SVG 学习<一>基础图形及线段 SVG 学习<二>进阶 SVG世界,视野,视窗 stroke属性 svg分组 SVG 学习<三>渐变 SVG 学习<四 ...

  8. Android JNI学习(三)——Java与Native相互调用

    本系列文章如下: Android JNI(一)——NDK与JNI基础 Android JNI学习(二)——实战JNI之“hello world” Android JNI学习(三)——Java与Nati ...

  9. day91 DjangoRestFramework学习三之认证组件、权限组件、频率组件、url注册器、响应器、分页组件

    DjangoRestFramework学习三之认证组件.权限组件.频率组件.url注册器.响应器.分页组件   本节目录 一 认证组件 二 权限组件 三 频率组件 四 URL注册器 五 响应器 六 分 ...

随机推荐

  1. python学习笔记_week10

    一.多进程multiprocessing io 操作不占用cpu,计算占cpu(如1+1),上下文切换耗资源(多线程可能不如单线程快),python多线程不适合cup密集操作型的任务,适合io操作密集 ...

  2. python学习笔记_week8

    一.Socket 当服务端传的东西大于客户端的最大值时怎么办?①改大buffer不行(有上限)②多传几次(用for循环必须要知道循环几次,所以不用for循环,用while) 服务端: import o ...

  3. 又见 tomcat启动startup.bat一闪而过

    startup.bat启动的时候,一闪而过,停止, 没有提示信息,错误信息,没有任何log... 后面在 startup.bat. catalina.bat 最后 加入 pause. 也看不到结果.. ...

  4. spark sql运行原理

    Spark sql 对SQL语句的处理,先将SQL语句进行解析(parse)形成一个tree,然后使用Rule对Tree进行绑定,优化等处理过程,通过模式匹配对不同类型的节点采用不同操作.查询优化器是 ...

  5. 在ls命令中使用通配符

    通配符比较简单.我们已经知道通配符常常是在shell终端中用来匹配文件名的,今天来看一下在ls命令中使用通配符的例子. 用法:ls [选项]... [文件]... ls本身也有很多的选项,我们今天不看 ...

  6. zookeeper 入门知识

    作为开启分布式架构的基石,除了必会还有的选么 自己的一些理解,有错误的话请一定要给予指正! 一.是什么? 分布式数据一致性的解决方案. 二.有什么用 数据的发布/订阅(配置中心)  . 负载均衡(du ...

  7. SQL优化 - 避免使用 IN 和 NOT IN

    WHY? IN 和 NOT IN 是比较常用的关键字,为什么要尽量避免呢? 1.效率低 项目中遇到这么个情况: t1表 和 t2表  都是150w条数据,600M的样子,都不算大. 但是这样一句查询  ...

  8. Array.Resize(ref arry, size);

    数组原来的内容不变,后面添加新的空间. 内部操作应该是:重新分配了一块空间,然后将旧的内容拷过去

  9. Zabbix3.0版报警设置

    各项报警历史记录查看:“报表--Action log” ------------------------------------------------------------------------ ...

  10. java为什么有些异常throw出去需要在函数头用throws声明,一些就不用。

    Excepiton分两类:checked exception.runtime exception:直接继承自Exception就是checked exception,继承自RuntimeExcepti ...