2011-11-09 55 views
0

我想知道Yii是否具有按類型對項目進行分組的有效方法。Yii按類型獲取記錄

比方說,我有以下型號:

Tag 
------ 
id 
name  
type_id 

而且我們說,有5種不同類型的Tag秒。我希望能夠通過type_id在我的索引中顯示所有標籤。有沒有完成這個的Yii方式?

外面的框架我會寫這樣從數據庫中獲取的結果存儲這樣的功能:在每個部分我可以做類似

$tags[$typeID][] = $tag; 

然後:

foreach($tags[$typeID] as $tag) 
{ 
    // Here are all tags for one $typeID 
} 

但我我很難理解如何在Yii中不這樣做:

A)先循環整個結果集並重寫它,或者,

B)運行5個不同的查詢。

回答

0

假設你的活動記錄類叫做MyActiveRecordClass,最簡單的方法應該是足夠了:

$models = MyActiveRecordClass::model()->findAll(); 
$groupedModels = array(); 

foreach ($models as $model) { 
    $groupedModels[$model->typeID][] = $model; 
} 

如果你給你打算如何顯示分組的結果,它可能是一個更好的辦法更具體的信息可以制定出來。

2

使用ActiveRecord時,只需在DBCriteria中指定「索引」即可。所以在查詢做:

ActiveRecordClass::model()->findAll(array('index'=>'type_id')); 

這將返回一個assoc數組,你的後。它可能執行完全相同的代碼,但是這顯然更容易使用,無處不在。

+0

+1,提及'index'選項:) – Jon