我尝试在事务中保存模型中的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?
答案 0 :(得分:3)
1)如果beforeSave
中有model
,请确保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();
}
答案 1 :(得分:0)
由于某些错误,第一个模型无法保存,但您无法对其进行验证,因此第二个模型不会出现问题。有没有保存模型的id。请使用以下内容:
if ($someModel->save()) {
$this->saveChildModel($someModel->id);
}
此外,您还需要确保someModel在数据库中具有有效的主键配置。