如何更新用户表yii2中的字段
我修改了用户表以添加一列,该列的名称是id\u periode,我有高级模板,所以我希望从后端控制器更新该列的值。我创建这样的控制器如何更新用户表yii2中的字段,yii2,yii2-advanced-app,Yii2,Yii2 Advanced App,我修改了用户表以添加一列,该列的名称是id\u periode,我有高级模板,所以我希望从后端控制器更新该列的值。我创建这样的控制器 public function actionPindahPeriode($id) { $model2 = $this->findModel2($id); if ($model2->load(Yii::$app->request->post()) ) { $model2->save(); r
public function actionPindahPeriode($id)
{
$model2 = $this->findModel2($id);
if ($model2->load(Yii::$app->request->post()) ) {
$model2->save();
return $this->render('view',
'model2' => $this->findModel2($id),
]);
}
date_default_timezone_set('Asia/Makassar');
$jam_sekarang = date('h:i:s', time());
$tgl_sekarang=date('Y-m-d');
$model_periode = Periode::find()
->andWhere(['>','mulai_daftar_ulang',$tgl_sekarang ])
->asArray()
->all();
return $this->renderAjax('pindah_periode', [
'model_periode' => $model_periode,
'model2' => $this->findModel2($id),
]);
}
protected function findModel2($id)
{
if (($model = User::findOne($id)) !== null) {
return $model;
}
throw new NotFoundHttpException('The requested page does not exist.');
}
findModel2函数如下所示
public function actionPindahPeriode($id)
{
$model2 = $this->findModel2($id);
if ($model2->load(Yii::$app->request->post()) ) {
$model2->save();
return $this->render('view',
'model2' => $this->findModel2($id),
]);
}
date_default_timezone_set('Asia/Makassar');
$jam_sekarang = date('h:i:s', time());
$tgl_sekarang=date('Y-m-d');
$model_periode = Periode::find()
->andWhere(['>','mulai_daftar_ulang',$tgl_sekarang ])
->asArray()
->all();
return $this->renderAjax('pindah_periode', [
'model_periode' => $model_periode,
'model2' => $this->findModel2($id),
]);
}
protected function findModel2($id)
{
if (($model = User::findOne($id)) !== null) {
return $model;
}
throw new NotFoundHttpException('The requested page does not exist.');
}
我把那个模型渲染成一种形式
<?php $form = ActiveForm::begin(); ?>
<?php $listData=ArrayHelper::map($model_periode,'id',function($model_periode){
return $model_periode['nama_periode'].' Tahun '.$model_periode['tahun'];});?>
<?= $form->field($model2, 'id_periode')->dropDownList($listData, ['prompt' => '']) ?>
<div class="form-group">
<?= Html::submitButton('Save', ['class' => 'btn btn-danger']) ?>
</div>
<?php ActiveForm::end(); ?>
表单正在工作,但我无法更新用户表中的值id\u period列。显示时没有错误,有什么建议吗?选项1:检查用户模型验证规则中的列字段。您需要将不需要的列字段从required属性转换为safe属性
选项2:尝试
$model2->保存(false)代码>false
将覆盖模型规则。选项1:检查用户模型验证规则中的列字段。您需要将不需要的列字段从required属性转换为safe属性
选项2:尝试$model2->保存(false)代码>false
将覆盖您的模型规则
确保您的新属性id\u period
具有在公共函数规则(){}
函数中定义的规则,这样$model2->load(Yii::$app->request->post())
将从提交的数据中分配此值
$model->save()
返回一个布尔值,无论记录是否保存。您可以利用这一点,检查是否存在任何验证错误。例如:
if($model2->save()) {
return $this->render('view',
'model2' => $this->findModel2($id),
]);
} else {
return $this->renderAjax('pindah_periode', [
'model_periode' => $model_periode,
'model2' => $this->findModel2($id),
]);
}
确保您的新属性id\u period
具有在公共函数规则(){}
函数中定义的规则,这样$model2->load(Yii::$app->request->post())
将从提交的数据中分配此值
$model->save()
返回一个布尔值,无论记录是否保存。您可以利用这一点,检查是否存在任何验证错误。例如:
if($model2->save()) {
return $this->render('view',
'model2' => $this->findModel2($id),
]);
} else {
return $this->renderAjax('pindah_periode', [
'model_periode' => $model_periode,
'model2' => $this->findModel2($id),
]);
}
选项1:我只有一个在公共模型目录中的用户模型,但是规则是这样的public function rules(){return[['status','default','value'=>self::status\u ACTIVE],'status','in','range'=>self::status\u ACTIVE,self::status\u DELETED],]}
选项2:我尝试了$model2->保存(false)
但该值仍然无法更新,我现在很困惑替代方法:打印发布的数据Yii::$app->request->post()
以确认您是否正在获取。如果id_periode设置了值;尝试$model2->id_periode=$post_data_作为[id_period]代码>在$model2>保存之前(false)代码>我已经解决了我的问题,首先我试着按照你的建议:$app->request->post()
,结果给了我一个有id_periode和值的数组,所以我得出结论,我应该取这个值并将其交给模型,所以我就是这么做的,`$post_VARIABLE=Yii:$app->request->post('User')$model2->id_periode=$POST_变量['id_periode'];`然后保存模型$model2->load(Yii::$app->request->post())
只加载发布的模型(即表)相关数据;但是Yii::$app->request->post()
将为您提供所有已发布的表单数据。快乐的编码。。!选项1:我只有一个在公共模型目录中的用户模型,但是规则是这样的public function rules(){return[['status','default','value'=>self::status\u ACTIVE],'status','in','range'=>self::status\u ACTIVE,self::status\u DELETED],]}
选项2:我尝试了$model2->保存(false)
但该值仍然无法更新,我现在很困惑替代方法:打印发布的数据Yii::$app->request->post()
以确认您是否正在获取。如果id_periode设置了值;尝试$model2->id_periode=$post_data_作为[id_period]代码>在$model2>保存之前(false)代码>我已经解决了我的问题,首先我试着按照你的建议:$app->request->post()
,结果给了我一个有id_periode和值的数组,所以我得出结论,我应该取这个值并将其交给模型,所以我就是这么做的,`$post_VARIABLE=Yii:$app->request->post('User')$model2->id_periode=$POST_变量['id_periode'];`然后保存模型$model2->load(Yii::$app->request->post())
只加载发布的模型(即表)相关数据;但是Yii::$app->request->post()
将为您提供所有已发布的表单数据。快乐的编码。。!打印(型号2);在$model2->save()之前;检查您是否在模型中获得“id\u periode”属性。或者检查您的common\config\main-local.php并设置'enableSchemaCache'=>false。您能分享模型«User»源代码吗?我感觉您缺少一些配置,因为我已经做了很多次了。如果需要,请使用Gist。@Sumit和@moplin,非常感谢您的回复,我已经解决了我的问题,首先我尝试打印Yii::$app->request->post()
,就像下面的Gru建议一样,结果给了我一个具有id周期和值的数组,所以我得出结论,我应该获取该值并将其提供给模型,所以我就是这么做的,$POST_VARIABLE=Yii::$app->request->POST('User')$模型2->id_periode=$POST_变量['id_periode']编码>然后保存模型打印文件($model2);在$model2->save()之前;检查您是否在模型中获得“id\u periode”属性。或者检查您的common\config\main-local.php并设置'enableSchemaCache'=>false。您能分享模型«User»源代码吗?我感觉您缺少一些配置,因为我已经做了很多次了。如果需要,请使用Gist。@Sumit和@moplin,非常感谢您的回复,我已经解决了我的问题,首先我尝试打印Yii::$app->request->post()
,就像下面的Gru建议一样,结果会给我一个具有id\u周期和值的数组,所以我会