分類一MANY_MANY關係比方說,我有以下的數據庫結構:聲明與警予
我有一個
Classifier
表包含分類類型,如「睛彩」,「髮色」的名單, 「鞋大小」等。它鏈接到Property
表,其具有與分類器對應的屬性列表。例如,它可以具有用於髮型的black
,brown
,brown
,white
和red
以及用於鞋號的US 8
,US 9
和US 10
。 Person
表以MANY_MANY方式鏈接到Property
表。
當這個結構中聲明警予像這樣
'properties'=>array(self::MANY_MANY, 'Property', 'Xref(Person_id, Property_id)')
我可以做這樣的事情:
foreach ($person->properties as $property) {
echo ($property->classifier->name.': '.$property->name);
}
但我在找的是單獨解決所有屬性,如$person->hairColor
或$person->shoeSize
。
當然,我可以聲明多個MANY_MANY與一個條件的關係(只有Classifier_id等於某個值)。但爲此,我需要事先知道所有分類器id - 根本不靈活。
但是有沒有辦法在yii中聲明這個關係,以便它自動解析分類器?因此,當我向Classifier
表添加新行時,例如說,build
和值slim
或athletic
,我可以只使用$person->build
而不聲明新的關係?
不僅如此,我想CDbCriteria
使用這些,像這樣$my_criteria->compare('build.name', 'slim')
,而不是兩者比較Classifier_id
什麼對應build
和Property
與'slim'
。
謝謝,這是一個開始。但是,這與CDbCriteria一起使用時可能不起作用。我會更新這個問題。 – Beowulfenator