我有以下代码:

        $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;

10-04 16:54