我不知道发生了什么事,因为事情没有加起来所以要求社区寻求帮助。
我有一个抵押贷款,有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结束?这是一个错误吗?
答案 0 :(得分:0)
似乎正在发生的事情是如果你使用默认的“loadModel($ id)”函数,它使用“findByPk”,它只返回一个基于主键的结果,可能在你的情况下是主申请人,不管其他条件如何。您需要以使用条件的方式创建模型,并返回多行,例如:
$model = Mortgage::model()->findAll();
然后将关系应用于该结果。