在轉到我的問題之前,請先看看我的控制器。在保存模型之前在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保存模型和方法?
感謝和抱歉我的英語:)