php – 更新操作如何在Yii中工作
发布时间:2020-12-13 22:51:10 所属栏目:PHP教程 来源:网络整理
导读:我是Yii框架的新手.我创建了一个表TblUser.现在,我有三列用户名,密码和电子邮件. 我在Yii中使用CRUD操作.已成功连接到数据库.我也能够在表格中创建一条新记录. 现在,数据库中的条目显示为 +----+----------+----------+--------------------+| id | username
我是Yii框架的新手.我创建了一个表TblUser.现在,我有三列用户名,密码和电子邮件.
我在Yii中使用CRUD操作.已成功连接到数据库.我也能够在表格中创建一条新记录. 现在,数据库中的条目显示为 +----+----------+----------+--------------------+ | id | username | password | email | +----+----------+----------+--------------------+ | 1 | test1 | pass1 | test1@example.com | | 2 | test2 | pass2 | test2@example.com | | 3 | test3 | pass3 | test3@example.com | +-----------------------------------------------+ 现在,在视图表单中,我通过注释(_form.php)删除了字段电子邮件.我正在使用此表单来更新剩余的字段. <?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','password'); ?> </div> <!-- <div class="row"> <?php echo $form->labelEx($model,'email'); ?> <?php echo $form->textField($model,'email','email'); ?> </div> --> <div class="row buttons"> <?php echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save'); ?> </div> <?php $this->endWidget(); ?> 要使用其余字段,我在_form.php中注释了电子邮件字段. 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`='test2@example.com' WHERE `tbl_user`.`id`=2 并不是 UPDATE `tbl_user` SET `password`='1234' WHERE `tbl_user`.`id`=2 现在我的问题是为什么再次更新未更改的值而不是仅更新更改的值. Yii是否对所有内容执行此更新查询.这是如何运作的. 解决方法
在Yii中,新记录保存和更新现有记录是类似的操作.
保存新记录时,将创建对象,如下所示. $model = new User; 现在每个模型都有一个名为isNewRecord的标志.这将设置为false / 0. $model=$this->loadModel($id); 现在isNewRecord将是真/ 1 根据该标志,将执行Insert或Update查询. Yii不知道哪些字段已更改.所以它只是根据标志更新与模型(即表)相关的所有字段值. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |