我最近被介绍到 Yii 框架中,目前正在为我的公司开发一个 Web 应用程序系统。但是我注意到,在创建模型以提供与相应表的连接时,它一次只允许选择一个关系。但是,我需要用一个表单连接来自同一个数据库的两个单独的表。
关于如何实现这一点的任何想法?
我最近被介绍到 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'),
ETC。,
如果您的数据库引擎在 Innodb 中并且表具有外键关系,则在创建模型时将自动生成关系。
有关更多信息,请阅读此
您可以使用任意数量的关系。
==============================================
在二读之后,我想你是在问关于将两个模型的对象变成一种形式?为此,您可以在控制器中生成每个模型的对象,并将这些对象通过render
或renderPartial
函数传递给查看
例如,
$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();
}