2012-08-06 57 views
1

使两个表的两个外键值之间的关系我有数据库,就像这个如何在Yii中

==== cis_policy_registration==== 
id 
policy_id 
email_id 
policy_start_date 


==== cis_policy_family_details=== 
id 
policy_id 
is_main_applicant 
firstname 
lastname 
gender 

现在如何使模型之间与policy_id(两个表)的关系, 我想取名字,并登记模型姓和检查是主申请人

必须在CGridView

列出

谁可以解决这个问题

在此先感谢

回答

2

这两个表之间的关系应该从“主”模式(政策)来处理,所以在策略模型类,你应该有:

'policy_reg' => array(self::HAS_ONE, 'PolicyRegistration', 'policy_id'), 
'policy_details' => array(self::HAS_ONE, 'PolicyDetails', 'policy_id'), 

然后:

$policy = Policy::model()->with(array('policy_details'))->findByPk($pk); 
$policy->policy_details->is_main_applicant; 
... 

而且在CGridView你可以(把从策略模型CActiveDataProvider对象后)打印这样的关系值:

'policy_details.firstname' 

array(
    'name'=>'Firstname', 
    'value'=>'$data->policy_details->firstname', 
), 
+0

如何获得$ PK或者[$政策=策略::模型() - >用(阵列( 'policy_details')) - > findByPk($ PK)]此代码必须粘贴 – Jethik 2012-08-06 09:38:13

+0

$ pk是您的策略模型的主键(id)。 – BornToDrink 2012-08-06 14:39:22