Yii框架:HAS_MANY通过条件不起作用?

时间:2011-06-08 19:23:27

标签: yii has-many-through

我不知道发生了什么事,因为事情没有加起来所以要求社区寻求帮助。

我有一个抵押贷款,有1个主要申请人和1个或多个(许多)共同申请人。

我的抵押贷款模式中的关系是:

// primary applicant connection
'primaryApplicantConnection' => array(self::HAS_ONE, 'PersonToMortgage', 'mortgage_id',
    'condition' => 'is_primary=1'
 ),

// primary applicant info
'primaryApplicant' => array(self::HAS_ONE, 'Person', 'person_id', 
    'through' => 'primaryApplicantConnection'),

// co-applicant connection
'coApplicantConnection' => array(self::HAS_MANY, 'PersonToMortgage', 'mortgage_id',
    'condition' => 'is_primary<>1 OR is_primary IS NULL'
),

// co-applicants' info
'coApplicants' => array(self::HAS_MANY, 'Person', 'person_id',
    'through' => 'coApplicantConnection'
),

在抵押贷款控制人中,

$mortgage_model=$this->loadModel($id);
$primaryApplicant = $mortgage_model->primaryApplicant; // return expect result
$coApplicants = $mortgage_model->coApplicants; // the problem is here

当我想通过使用$ mortgage_model-&gt; coApplicants获取所有coApplicants时,结果还包括主申请人。

为了追踪问题,我尝试了这个$ mortgage_model-&gt; coApplicantConnection,它只返回共同申请人的行。

所以我想知道主要申请人来自哪里?以及它如何以$ mortgage_model-&gt; coApplicants结束?这是一个错误吗?

1 个答案:

答案 0 :(得分:0)

似乎正在发生的事情是如果你使用默认的“loadModel($ id)”函数,它使用“findByPk”,它只返回一个基于主键的结果,可能在你的情况下是主申请人,不管其他条件如何。您需要以使用条件的方式创建模型,并返回多行,例如:

$model = Mortgage::model()->findAll();

然后将关系应用于该结果。