2012-12-05 76 views
2

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

关于如何完成这个任何想法?

回答

5

里面的模型,你可以看到下面的功能,

/** 
* @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和表有外键关系,那么关系将自动在创建模型生成。

欲了解更多信息read this

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

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

第二次阅读后,我想你是在问两个模型的对象是否合成一个表单?为可以产生在控制器的每个模型的对象,并通过这些对象通过renderrenderPartial功能查看

例如,

$this->render('admin',array(
      'model'=>$model, 
        'model2'=>$model2, 
     )); 

和视图使用模型和模型2对各个字段

<?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(); 
} 
相关问题