php - Yii HAS_MANY 与非外键和非主键的关系

标签 php mysql yii

我有以下代码:

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

相关文章:

php - 为每个查询创建新连接?

php - 为什么我不应该在 PHP 中使用 mysql_* 函数?

php - 通过用户代理识别手机

php - 在我自己的脚本中使用 jimport

mysql 将数据库行从数据库 1 多次复制到新数据库 2,循环遍历数据库 3 的值

php - xampp php文件上传错误

php - 单词的最小和最大规则?

php - Yii2:如何在 CheckboxList 中显示选中的值

php - 使用 PHP 在 MySQL 中选择一行的最佳方法是什么?

jquery - 未捕获的类型错误 : Cannot call method 'match' of undefined