2012-12-05 145 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(); 
} 
相關問題