我怎么能解决这个错误?我有问题从同一个id替换数据这是我的_from:
<div class="row buttons">
<?php echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Update'); ?>
</div>
这是我的Controller动作创建:
public function actionCreate()
{
$model=new TblUasUts;
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);
if(isset($_POST['TblUasUts']))
{
$model->attributes=$_POST['TblUasUts'];
if($model->save())
$this->redirect(array('view','id'=>$model->nim_mhs));
}
$this->render('update',array(
'model'=>$model,
));
}
这就是我得到的错误:
CDbCommand gagal menjalankan statementSQL: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '2010140360' for key 'PRIMARY'
答案 0 :(得分:1)
这是因为您尝试使用现有的主键ID保存元素。如果要更新DB中的现有条目,则应从DB(TblUasUts :: model() - &gt; findByPk)加载ActiveRecord。您还可以将字段ID从$ _POST数组中取消设置,并且每次都在DB中创建新行。
public function actionCreate()
{
$model=new TblUasUts;
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);
if(isset($_POST['TblUasUts']))
{
if (isset($_POST['TblUasUts']['id']) && $_POST['TblUasUts']['id']) {
$model = TblUasUts::model()->findByPk((int)$_POST['TblUasUts']['id']);
}
$model->attributes=$_POST['TblUasUts'];
if($model->update())
$this->redirect(array('view','id'=>$model->nim_mhs));
}
$this->render('update',array(
'model'=>$model,
));
}
答案 1 :(得分:0)
使用update删除保存:
<div class="row buttons">
<?php echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Update'); ?>
</div>
and this is my Controller action Create :
public function actionCreate()
{
$model=new TblUasUts;
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);
if(isset($_POST['TblUasUts']))
{
$model->attributes=$_POST['TblUasUts'];
if($model->update())
$this->redirect(array('view','id'=>$model->nim_mhs));
}
$this->render('update',array(
'model'=>$model,
));
}
另外,请检查您的ID字段是否自动增加和主要。