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

Forms 如何在Yii中用一个表单连接两个表,forms,yii,model,yii-relations,Forms,Yii,Model,Yii Relations,我最近被引入Yii框架,目前正在为我的公司开发一个web应用程序系统。但是,我注意到,当创建模型以提供到相应表的连接时,它一次只允许选择一个关系。但是,我需要用一个表单连接同一数据库中的两个单独的表 关于如何实现这一点,您有什么想法吗?在模型内部,您可以看到以下功能 /** * @return array relational rules. */ public function relations() { return array( ); } 在这里,您可以添加关

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


关于如何实现这一点,您有什么想法吗?

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

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

    );
}
在这里,您可以添加关系。像

'user' => array(self::BELONGS_TO, 'User', 'user_id'),
'comments' => array(self::HAS_MANY, 'Comments', 'blog_post_id'),
等等,

如果数据库引擎位于Innodb中,并且表具有外键关系,则在创建模型时会自动生成这些关系

更多信息

您可以使用任意数量的关系

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

在第二次阅读之后,我想你问的是把两个模型的物体变成一种形式?为此,您可以在控制器中生成每个模型的对象,并通过
render
renderPartial
函数将这些对象传递给视图

e、 g

在视图内部,分别使用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'); ?>


....
<?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'); ?>


....
$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();
}