gpt4 book ai didi

php - 在保存模型之前在 YII 中获取模型 ID

转载 作者:行者123 更新时间:2023-11-29 13:28:10 24 4
gpt4 key购买 nike

在回答我的问题之前,请先看看我的 Controller 。

这是我的 Controller :

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 中,我想获取 Yii::app()->vsm->preprocessing_kata 方法的模型 ID。但是,我只知道 $model->id 可以在 $model->save 执行后生成。在这里,如果 LINE X 中的方法已成功执行,我想保存模型。如果方法成功,该方法将返回 true

我有一个替代方案:为了获得模型 ID,所以我必须在模型数据库中查询最新的 ID,并将其用于该方法。但我担心是否有其他人同时访问 actionTambahKnowledge。因此从数据库中检索到的模型 ID 变得不一致。例如,X 先生访问 actionTambahKnowledge。我假设 Mr.X 的模型 ID 等于 1。但与此同时,Y 先生也访问了该操作,并且 Y 先生获得了相同的 ID,因为 X 先生尚未保存该操作。最后,Mr.X 成功保存了模型和模型 ID 正确的方法。 Mr.Y 也成功保存了模型和方法,但是 Mr.Y 填写的数据将替换 Mr.X 的数据。

那么,我可以在不保存模型的情况下获取模型ID吗?以及如何使用正确的模型 ID 保存模型和方法,即使有其他人同时访问该操作?

谢谢,对不起我的英语:)

最佳答案

在保存之前无法访问模型 ID。但是您可以先将模型保存在事务中,然后检查您的条件,如果不正确,则回滚事务:

$transaction=$model->dbConnection->beginTransaction();
$model->save(false);
if(Yii::app()->vsm->preprocessing_kata($model->id))
$transaction->commit();
else
$transaction->rollBack();

关于php - 在保存模型之前在 YII 中获取模型 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29809977/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com