我是Yii框架的新手。我創建了一張表TblUser
。現在,我有三列username
,password
和email
。 我在Yii使用CRUD
操作。與數據庫的連接已成功完成。我還能夠在表格中創建一個新記錄。 現在在數據庫中的條目作爲Yii更新操作如何工作
+----+----------+----------+--------------------+
| id | username | password | email |
+----+----------+----------+--------------------+
| 1 | test1 | pass1 | [email protected] |
| 2 | test2 | pass2 | [email protected] |
| 3 | test3 | pass3 | [email protected] |
+-----------------------------------------------+
現在,在視圖形式I通過註釋(_form.php這個)除去字段email
讀取。我正在使用此表單來更新剩餘的字段。
<?php
/* @var $this TblUserController */
/* @var $model TblUser */
/* @var $form CActiveForm */
?>
<div class="form">
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'tbl-user-form',
'enableAjaxValidation'=>false,
)); ?>
<p class="note">Fields with <span class="required">*</span> are required.</p>
<?php echo $form->errorSummary($model); ?>
<div class="row">
<?php echo $form->labelEx($model,'username'); ?>
<?php echo $form->textField($model,'username',array('size'=>60,'maxlength'=>128)); ?>
<?php echo $form->error($model,'username'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'password'); ?>
<?php echo $form->passwordField($model,'password',array('size'=>60,'maxlength'=>128)); ?>
<?php echo $form->error($model,'password'); ?>
</div>
<!--
<div class="row">
<?php echo $form->labelEx($model,'email'); ?>
<?php echo $form->textField($model,'email',array('size'=>60,'maxlength'=>128)); ?>
<?php echo $form->error($model,'email'); ?>
</div>
-->
<div class="row buttons">
<?php echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save'); ?>
</div>
<?php $this->endWidget(); ?>
要使用我在_form.php這個評論的email
標區的其餘部分。 現在在我的控制器我有更新的代碼如下所示:
public function actionUpdate($id)
{
$model=$this->loadModel($id);
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);
if(isset($_POST['TblUser']))
{
$model->attributes=$_POST['TblUser'];
if($model->save())
$this->redirect(array('view','id'=>$model->id));
}
$this->render('update',array(
'model'=>$model,
));
}
當我看到我的查詢日誌,更新查詢是
UPDATE `tbl_user` SET `id`=2, `username`='1234', `password`='1234', `email`='[email protected]' WHERE `tbl_user`.`id`=2
,而不是
UPDATE `tbl_user` SET `password`='1234' WHERE `tbl_user`.`id`=2
現在我的問題是爲什麼要重新更新未更改的值,而不是僅更新已更改的值。 Yii是否對此做了更新查詢。這個怎麼用。
如果你看看這個,你可能會仍然有這個字段引用相關的模型,你可能需要從數據庫中刪除字段並使用GII再生模型。顯然會備份任何修改。順便說一下,一個很好的問題,榮譽。 –