我尝试在事务中获取保存模型中的id,如
$transaction = Yii::app()->db->beginTransaction();
try
{
$someModel = new SomeModel(); // extends CActiveRecord
$someModel->someProperty = '123';
$someModel->save();
$childModel = new ChildModel();
$childModel->parent_id = $someModel->id; // this id is empty =(
$childModel->save();
// ... more some logic ... //
}
catch ('Exception $e)
{
$transaction->rollback();
}
$transaction->commit();
为什么我不能在事务中获得增量id ?
1)如果你的model
中有beforeSave
,那么确保returns
是其父的beforeSave
:
return parent::beforeSave();
2)尝试保存ChildModel
只有当Parent
Model
是Saved
$someModel = new SomeModel(); // extends CActiveRecord
$someModel->someProperty = '123';
if($someModel->save()){
$childModel = new ChildModel();
$childModel->parent_id = $someModel->getPrimaryKey();
$childModel->save();
}
由于一些错误,第一个模型无法保存,但您没有验证它,因此第二个模型没有未保存模型的id。请使用以下格式:
if ($someModel->save()) {
$this->saveChildModel($someModel->id);
}
您还需要确保someModel在数据库中具有有效的主键配置