PHPActiveRecord 学习三

时间:2023-03-10 04:53:05
PHPActiveRecord 学习三

#事务处理 注意事务 数据库要用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