我有以下代码:
$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获取有关“国家/地区”的细分。
我不确定为什么会出现以下错误:
在活动记录类“ CountryCodes”中未定义关系“ country_subdivisions”。
我是Yii Framework的新手,正在使用Yii 1.1.x和php 5.6。
最佳答案
首先,您需要通过覆盖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;