我有以下代码:
$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。
最佳答案
首先,您需要通过覆盖 relations()
来定义关系CountryCodes 类中的方法。
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;
关于php - Yii HAS_MANY 与非外键和非主键的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27031314/