我有以下代码:
$country = CountryCodes::model()->with(
[
'country_subdivisions' => [
CountryCodes::HAS_MANY,
'CountrySubDivision',
['country_subdivisions.iso2'=>'t.iso2']
]
]
)->findByPk($id);
$states = $country->country_subdivisions;
我有2个模型/表CountryCodes和CountrySubDivision。两个表都有iso2列。我想获得一个国家ID的相关细分。
我不确定为什么会出现以下错误:
关系" country_subdivisions"未在活动记录类中定义" CountryCodes"。
我是Yii Framework的新手,我使用的是Yii 1.1.x和php 5.6。
答案 0 :(得分:0)
首先,您需要通过覆盖CountryCodes类中的relations()
方法来定义关系。
public function relations() {
$relations = [
'country_subdivisions' => [
CountryCodes::HAS_MANY,
'CountrySubDivision',
[
'iso2' => 'iso2'
]
]
];
// merge with parents
return CMap::mergeArray(
parent::relations(),
$relations
);
}
然后,你可以:
$country = CountryCodes::model()->with('country_subdivisions')->findByPk($id);
$states = $country->country_subdivisions;