Yii,CactiveForm在DB中保存多个表

Yii, CactiveForm saving multiples tables in DB


Yii,CactiveForm在DB中保存多个表 已获得1个解决方法 2020-08-18 18:07:09 php

我是yii的新手,我试图将数据保存在CactiveForm上的不同表中.这是我的代码:

<?php
/* @var $this UserController */
/* @var $user User */
/* @var $form CActiveForm */
?>

<div class="form">

<?php $form=$this->beginWidget('CActiveForm', array(
        'id'=>'user-form',
        // Please note: When you enable ajax validation, make sure the corresponding
        // controller action is handling ajax validation correctly.
        // There is a call to performAjaxValidation() commented in generated controller code.
        // See class documentation of CActiveForm for details on this.
        'enableAjaxValidation'=>false,
)); ?>

        <p class="note">Fields with <span class="required">*</span> are required.</p>

        <?php echo $form->errorSummary($user, $gunwcuser, $game, $cash); ?>

        <div class="row">
                <?php echo $form->labelEx($user,'user'); ?>
                <?php echo $form->textField($user,'user',array('size'=>16,'maxlength'=>16)); ?>
                <?php echo $form->error($user,'user'); ?>
        </div>

        <div class="row">
                <?php echo $form->labelEx($user,'Gender'); ?>
                <?php echo $form->radioButtonList($user,'Gender', array(0 => 'Male', 1 => 'Female'), array('labelOptions'=>array('style'=>'display:inline'), 'separator'=>' ',)); ?>
                <?php echo $form->error($user,'Gender'); ?>
        </div><br>

        <div class="row">
                <?php echo $form->labelEx($user,'NickName'); ?>
                <?php echo $form->textField($user,'NickName',array('size'=>16,'maxlength'=>16)); ?>
                <?php echo $form->error($user,'NickName'); ?>
        </div>

        <div class="row">
                <?php echo $form->labelEx($user,'Password'); ?>
                <?php echo $form->passwordField($user,'Password',array('size'=>16,'maxlength'=>16)); ?>
                <?php echo $form->error($user,'Password'); ?>
        </div>

        <div class="row">
                <?php echo $form->labelEx($user,'E_Mail'); ?>
                <?php echo $form->textField($user,'E_Mail',array('size'=>50,'maxlength'=>50)); ?>
                <?php echo $form->error($user,'E_Mail'); ?>
        </div>

        <div class="row">
                <?php echo $form->labelEx($user,'Country'); ?>
                <?php echo $form->textField($user,'Country',array('size'=>3,'maxlength'=>3)); ?>
                <?php echo $form->error($user,'Country'); ?>
        </div>

        <div class="row buttons">
                <?php echo CHtml::submitButton($user->isNewRecord ? 'Create' : 'Save'); ?>
        </div>

<?php $this->endWidget(); ?>

</div><!-- form -->

DB中有4张桌子 .. 它们是 (用户、枪手、游戏、现金).此表单用于用户表,gunwcuser将具有放入用户表单中的相同数据,但并非所有保存在表单中的数据都被请求.

这是我的控制器:

public function actionCreate()
        {
                $user = new User;
                $gunwcuser =new Gunwcuser;
                $game = new Game;
                $cash = new Cash;

                // Uncomment the following line if AJAX validation is needed
                // $this->performAjaxValidation($model);

                $auth = 1;
                $time = '0000-00-00 00:00:00';

                if(isset($_POST['User']))
                {


                        // Set data column in DB before saving
                        $user->Status = '1';
                        $user->MuteTime = $time;
                        $user->RestrictTime = $time;
                        $user->Authority = $auth;
                        $user->User_Level = '1';
                        $user->Authority2 = $auth;
                        $user->attributes=$_POST['User'];

                        $_POST['Gunwcuser'] = $_POST['User'];
                        $gunwcuser->Status = '1';
                        $gunwcuser->MuteTime = $time;
                        $gunwcuser->RestrictTime = $time;
                        $gunwcuser->Authority = $auth;
                        $gunwcuser->User_Level = '1';
                        $gunwcuser->Authority2 = $auth;
                        $gunwcuser->AuthorityBackup = $auth;
                        $gunwcuser->attributes=$_POST['Gunwcuser'];

                        $_POST['Game'] = $_POST['User'];



                        if($user->save())
                                $this->redirect(array('view','id'=>$user->Id));
                }

                $this->render('create',array(
                        'user'=>$user, 'gunwcuser'=>$gunwcuser, 'game'=>$game, 'cash'=>$cash,
                ));
        }

我试图将属性从user复制到gunwcuser,但是当我从user保存数据时,我检查数据库以查看是否也保存了gunwcuser,但没有.

游戏桌上也有一些数据将是相同的,但大部分数据将与现金相同.

常见的数据有 (id,用户名,昵称,性别,电子邮件,国家,密码) ..

任何人都可以告诉我如何将数据保存在同一表单上的不同表中?同时保存不同的数据


Yii,CactiveForm在DB中保存多个表 方法1

嗯 .. 让我想想.你有两个模型,但你只保存一个 :).添加此代码

$gunwcuser ->save()

$ 此-> 重定向之前

如果要同时保存 $ user和 $ gunwcuser,则必须在每个模型对象上使用save() 方法

if($user->save() && $gunwcuser ->save())

    $this->redirect(array('view','id'=>$user->Id));

.htaccess .net .net-core 2d 3d 3d-printing ab-initio abp abstract-syntax-tree actions-on-google actionscript-3 active-directory activemq activemq-artemis acumatica adobe-xd aframe ag-grid agora.io air airflow ajax akka alert alexa algorithm alignment allure amadeus amazon-cloudformation