我想知道如何(如果可能的话)在 Yii 模型中组合(联合)关系。
我有以下型号:
- 用户
- 国家
- 省
- 城市
- 物品
地理层级关系为:
- 国家有很多省
- 省有很多城市
- 城市有很多项目
国家和省级有很多项:'through'=>'cities'
用户-地理关系有点复杂:
- 用户 - 国家(多对多)
- 用户 - 省(多对多)
- 用户 - 城市(多对多)
因此,可以将用户分配到任何地理级别,并将隐含分配到该级别的所有子级别。
例如。分配到加拿大、加利福尼亚和芝加哥的用户将有权访问:
- 加拿大所有城市所有省份的所有物品
- 以及加州所有城市的所有物品
- 以及芝加哥的所有物品
因此,我想查看通过用户的地理级别将哪些项目分配给用户。所以我想建立一个关系,允许我通过访问“items”属性(例如$myUser->items)来访问分配给它们的所有项目。
实际上,我想将这些组合成一个称为“项目”的关系:
'countryItems' => array(self::HAS_MANY, 'Item', array('id' => 'country_id'), 'through'=>'countries'),
'provinceItems' => array(self::HAS_MANY, 'Item', array('id' => 'province_id'), 'through'=>'provinces'),
'cityItems' => array(self::HAS_MANY, 'Item', array('id' => 'city_id'), 'through'=>'cities'),