2012-09-02 70 views
1

比方說,我有兩個AR類:DeckCard。每個卡組記錄都應該是卡記錄的排序列表。當我取甲板紀錄,我希望能夠把它當作一個CTypedList:Yii:如何使活動記錄的行爲像一個CTypedList和其他活動記錄一樣列表元素?

$Deck->save()
$Deck = Deck::model()->findByPk(1); // Retrieve the deck 
$Card = $Deck->removeAt(0); // draw the first card (and remove it from the deck) 
$Deck->shuffle(); // shuffle the deck 
$n = $Deck->count(); // get the number of remaining cards in the deck 
$Deck->save(); 

後,數據庫記錄應該反映甲板的新狀態,即卡和一個新秩序卡已被刪除。

編輯:我的解決方案被稱爲ListBehavior,一個ActiveRecordBehavior,使AR行爲像CLists。該代碼是開源的,可作爲gist使用。隨意使用它並隨意編輯。

+0

你應該回答自己的問題,並接受它作爲回答這樣的問題不留詮釋他沒有答案列表 – DarkMukke

回答

1
$Deck = Deck::model()->findByPk(1); // Retrieve the deck 

$Card = $Deck->removeAt(0); // draw the first card (and remove it from the deck) 

shuffle($Deck); // shuffle the deck 

$n = $Deck->count(); // get the number of remaining cards in the deck 

$Deck->save();