2012-12-31 63 views
3
'driverNegotiation' => array(self::HAS_MANY, 'DriverNegotiation', 'driver_id') 

這會爲我的Driver對象生成一個negotiations的數組。該數組從零開始索引。有沒有辦法將的值設置爲數組鍵,比方說team_id可以從DriverNegotiation找到?更改HAS_MANY關係產生的陣列

+1

將[['index'=>'team_id''](http://www.yiiframework.com/doc/api/1.1/CHasManyRelation#index-detail)添加到關係規範中。 – DCoder

回答

3

我不完全確定你的意思是「設置用作數組鍵」的值。但是,如果你的意思是得到一個陣列從一個由DriverNegotiation表值中的一個索引,而不是數字的driverNegotiation關係回,那麼你可以將index參數添加到關係:

'driverNegotiation' => array(self::HAS_MANY, 'DriverNegotiation', 'driver_id', 'index'=>'team_id') 

要知道,無論TEAM_ID衝突你只會得到一個結果,這幾乎相當於做一個小組。

更新
按您的評論有關從關係拉下來,它不是我做過,但也可能是可行的。我的猜測是,在with使用'together'=>true拉下關係在一起,然後指定一個index

'index'=>'`baseNegotiation`.`team_id`' 

如果不工作,我不知道接下來要去哪裏,並在無法測試分鐘,但我也會嘗試Yii Forums,因爲開發人員非常擅長在那裏迴應。

+0

這就是我的意思,謝謝!但現在我有另一個問題。實際上,這個team_id位於base_negotiaton(對不起,我忘記了),它與DriverNegotiation「baseNegotiation」=> array(self :: BELONGS_TO,'BaseNegotiation','base_negotiation_id')有關。有沒有一種方法可以將它用作關鍵字? – Gessle

+0

隨着你的幫助和幫助http://stackoverflow.com/questions/5702847/create-a-relation-of-more-than-three-tables-in-yii我得到的錯誤:'Property「DriverNegotiation.baseNegotiation.team_id 「沒有定義。」那麼我從一開始如何擺脫DriverNegotiation? – Gessle

+0

現在我意識到這個問題可以通過MANY_MANY關係來解決...... :) – Gessle