Sql cakephp-3.0中的事务

Sql cakephp-3.0中的事务,sql,cakephp,transactions,cakephp-3.0,query-builder,Sql,Cakephp,Transactions,Cakephp 3.0,Query Builder,在我的cakephp3.0应用程序注册页面中,注册数据插入到两个表中。我正在使用查询生成器来执行此操作。成功将数据插入第一个表(项目表)后,projectId(项目表的主键,它是自动递增的值)将返回,用于插入第二个表,即ProjectCustomers表,在ProjectCustomers表中,projectId用作forign键。我的控制器看起来像这样 public function initialize() { parent::initialize(); $this->Proj

在我的cakephp3.0应用程序注册页面中,注册数据插入到两个表中。我正在使用查询生成器来执行此操作。成功将数据插入第一个表(项目表)后,projectId(项目表的主键,它是自动递增的值)将返回,用于插入第二个表,即ProjectCustomers表,在ProjectCustomers表中,projectId用作forign键。我的控制器看起来像这样

public function initialize() {
parent::initialize();    
$this->Project = new ProjectsTable();
$this->ProjectCustomer = new ProjectCustomersTable();    
}

}


我需要的是,我希望在事务中执行这两个插入操作,以便在第二次插入失败的情况下,Projects表中的第一次插入应该回滚。提前感谢您的帮助……

为什么不使用CakePHP提供的适当功能,即自动保存数据(包括关联)的ORMs功能?另外,手动实例化表类通常不是一个很好的主意。因为我正在进行应用程序移植,并且我有这样做的要求,所以我无法遵循save方法。由于cakephp3.0支持查询生成器,因此可能会有一些选项来执行此事务,对吗?
public function add() {  
if ($this->request->is('post')) {
  $project_id = $this->Project->putProject($formData['survey_id'], $formData['title'], $formData['operator'], $this->Auth->user('id'));
  $this->ProjectCustomer->putProjectCustomer($project_id, $formData['air_id'], $formData['email'], $formData['name'], $formData['company_name'], $formData['department_name'], SYS_ADMIN, PROJECT_CUSTOMER_STATUS_ACTIVE, $date, $date);
  return $this->redirect(['action' => 'view', $project_id]);
}