如何在Yii中使用一个表单连接两个表

Yoo*_*suf 2 forms model yii yii-relations

我最近被引入Yii框架,目前正在为我的公司开发一个Web应用程序系统.但是我注意到,在创建模型以便提供与相应表的连接时,它只允许一次选择一个关系.但是,我需要使用单个表单从同一个数据库连接两个单独的表.

关于如何实现这一点的任何想法?

aru*_*run 5

在模型内部,您可以看到以下功能,

    /**
 * @return array relational rules.
 */
public function relations()
{
    return array(

    );
}
Run Code Online (Sandbox Code Playgroud)

在这里你可以添加关系.喜欢

'user' => array(self::BELONGS_TO, 'User', 'user_id'),
'comments' => array(self::HAS_MANY, 'Comments', 'blog_post_id'),
Run Code Online (Sandbox Code Playgroud)

等等.,

如果您的数据库引擎在Innodb中并且表具有外键关系,则在创建模型时将自动生成关系.

欲了解更多信息,请阅读

你可以使用任意数量的关系.

=============================================

在二读之后,我认为你问的是将两个模型的对象合并为一个形式?为此,您可以在控制器中生成每个模型的对象,并将这些对象传递给通过renderrenderPartial函数查看

例如,

$this->render('admin',array(
            'model'=>$model,
                    'model2'=>$model2,
        ));
Run Code Online (Sandbox Code Playgroud)

在视图内部,使用model和model2表示各个字段

<?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'sample-form',
    'enableAjaxValidation'=>false,
)); ?>

.....

        <?php echo $form->labelEx($model,'column'); ?>
        <?php echo $form->textField($model,'column'); ?>
        <?php echo $form->error($model,'column'); ?>

        <?php echo $form->labelEx($model2,'column'); ?>
        <?php echo $form->textField($model2,'column'); ?>
        <?php echo $form->error($model2,'column'); ?>


....
Run Code Online (Sandbox Code Playgroud)

在控制器功能内部使用如下所示(比如用于保存数据)

$model->attributes=$_POST['ModelOnesName'];
$valid  =   $model->validate();
$model2->attributes =   $_POST['ModelTwosName'];
$valid  =   $model2->validate() && $valid; //if need validation checks
if($valid)
{
   $model->save();
   $model2->save();
}
Run Code Online (Sandbox Code Playgroud)