在转到我的问题之前,请先看看我的控制器。在保存模型之前在YII中获取型号ID
这是我的控制器:
public function actionTambahKnowledge(){
$model = new Dokumen;
if(isset($_POST['Dokumen']))
{
$model->attributes=$_POST['Dokumen'];
if($model->validate()){
if(Yii::app()->vsm->preprocessing_kata($model->id)){ //LINE X
$model->save(false)
Yii::app()->user->setFlash('tambahknowledge','Knowledge baru berhasil ditambahkan');
$this->redirect(array('tambahKnowledge'));
}
}
}
$this->render('tambahKnowledge',array('model'=>$model));
}
在LINE X
,我想要得到的模型ID为Yii::app()->vsm->preprocessing_kata
方法。但是,我只知道$model->id
可以在执行$model->save
后生成。在这里,如果LINE X
中的方法已成功执行,我想保存模型。如果方法成功,该方法将返回true
。
我有一个替代解决方案: 为了获取模型ID,所以我必须查询模型数据库中的最新ID,并将其用于该方法。但是如果有人在同一时间访问actionTambahKnowledge
,我很害怕。因此从数据库中检索的模型ID变得不一致。例如,Mr.X访问actionTambahKnowledge
。我假设Mr.X的型号ID等于1
。但是在同一时间,Y先生也访问这个动作,并且Y先生得到相同的ID,因为X先生没有保存动作。最后,Mr.X成功保存了具有正确型号ID的模型和方法。 Y先生也成功保存了模型和方法,但Y先生填写的数据将取代Mr.X的数据。
那么,我可以在不保存模型的情况下获取模型ID吗?以及即使有人在同一时间访问动作,我如何使用正确的模型ID保存模型和方法?
感谢和抱歉我的英语:)