Yii 组合模型关系
我想知道如何(如果可能的话)在Yii模型中组合(联合)关系 我有以下型号:Yii 组合模型关系,yii,relationship,Yii,Relationship,我想知道如何(如果可能的话)在Yii模型中组合(联合)关系 我有以下型号: 使用者 国家 省 城市 项目 地理层次关系是: 这个国家有许多省份 这个省有许多城市 这个城市有很多东西 国家和省级有许多项目:“通过”=>“城市” 用户地理关系要复杂一些: 用户-国家/地区(多对多) 用户-省(多对多) 用户-城市(多对多) 因此,用户可以被分配到任何地理级别,并将隐含分配到该级别的所有子级别 例如,分配到加拿大、加利福尼亚和芝加哥的用户将有权访问: 加拿大所有城市所有省份的所有项目 以
- 使用者
- 国家
- 省
- 城市
- 项目
- 这个国家有许多省份
- 这个省有许多城市
- 这个城市有很多东西
- 用户-国家/地区(多对多)
- 用户-省(多对多)
- 用户-城市(多对多)
- 加拿大所有城市所有省份的所有项目
- 以及加州所有城市的所有商品
- 还有芝加哥的所有商品
这里的问题是,您不能创建一个SQL语句来获取用户的所有不同项,因为项和用户之间的连接是不明确的:一个项可以通过不同的路径连接到用户。这意味着,同一项目甚至可能有多个连接到用户(例如,通过城市和省) 您可以尝试为用户和项目之间的每个可能路径(通过国家、省和市)添加一个
连接。但是提到的模棱两可总是挡在你的路上:你最终可能会得到一个包含重复项的结果
由于原始SQL中没有解决方案,所以不能仅用Yii关系来解决它。不过,您始终可以编写一个getter:
public getItems()
{
$items = array();
foreach($this->countryItems as $item)
$items[$item->id] = $item;
foreach($this->provinceItems as $item)
$items[$item->id] = $item;
foreach($this->cityItems as $item)
$items[$item->id] = $item;
return $items;
}
这有效地为您提供了一个$items
属性,该属性包含该用户的所有不同项。这里的问题是,您无法创建一个SQL语句来获取用户的所有不同项,因为项和用户之间的连接不明确:一个项可以通过不同的路径连接到用户。这意味着,同一项目甚至可能有多个连接到用户(例如,通过城市和省)
您可以尝试为用户和项目之间的每个可能路径(通过国家、省和市)添加一个连接。但是提到的模棱两可总是挡在你的路上:你最终可能会得到一个包含重复项的结果
由于原始SQL中没有解决方案,所以不能仅用Yii关系来解决它。不过,您始终可以编写一个getter:
public getItems()
{
$items = array();
foreach($this->countryItems as $item)
$items[$item->id] = $item;
foreach($this->provinceItems as $item)
$items[$item->id] = $item;
foreach($this->cityItems as $item)
$items[$item->id] = $item;
return $items;
}
这将有效地为您提供一个$items
属性,该属性包含该用户的所有不同项