【发布时间】:2015-05-28 12:32:33
【问题描述】:
我在创建表组和具有关系用户组的表时尝试使用事务。 当我不使用事务时它工作正常,所以属性的命名是正确的。代码如下:
$db = Yii::app()->db;
$transaction = $db->beginTransaction();
try {
$model->attributes=$_POST['MyGroup'];
$model->save();
$model->refresh();
$userMyGroup = new UserMyGroup();
$userMyGroup->IDMyGroup = $model->IDMyGroup;
$userMyGroup->IDUser = Yii::app()->user->id;
$userMyGroup->save();
$transaction->commit();
} catch (CDbException $ex) {
Yii::log("Couldn't create group:".$ex->errorInfo[1], CLogger::LEVEL_ERROR);
$transaction->rollback();
}
错误是:
The INSERT statement conflicted with the FOREIGN KEY constraint "FK_UserMyGroup_MyGroup". The conflict occurred in database "MyDatabase", table "dbo.MyGroup", column 'IDMyGroup'.. The SQL statement executed was: INSERT INTO [dbo].[UserMyGroup] ([IDMyGroup], [IDUser]) VALUES (:yp0, :yp1). Bound with :yp0=4022, :yp1=1
问题可能是保存的模型可能不在数据库中,同时使用外键保存第二个模型(userMyGroup)。如何正确进行交易?
编辑:
我发现问题是由audit module 引起的,它正在尝试记录查询,但不能,因为它在事务中并且尚未真正保存在数据库中。我正在尝试弄清楚如何将此事务与模块一起使用...
【问题讨论】:
标签: php yii transactions foreign-keys