Yii按类型提取记录

时间:2011-11-09 23:57:49

标签: php yii grouping processing-efficiency

我想知道Yii是否有一种按类型分组项目的有效方法。

我们说我有以下型号:

Tag
------
id
name    
type_id

让我们说有5种不同类型的Tag。我希望能够在我的索引中显示type_id部分中的所有标签。是否有实现这一目标的方式?

在框架之外,我会编写一个函数,以便从DB中获取的结果存储如下:

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

然后在每个部分我都可以这样做:

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

但是我很难在Yii中弄清楚如何做到这一点:

A)首先遍历整个结果集并重写它,或者

B)运行5个不同的查询。

2 个答案:

答案 0 :(得分:2)

使用ActiveRecord时,只需在DBCriteria中指定“index”即可。所以在查询中执行:

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

那将返回你之后的一个关联数组。 TBF它可能执行完全相同的代码,但这显然更容易在任何地方执行它。

答案 1 :(得分:0)

假设您的活动记录类名为MyActiveRecordClass,最简单的方法就足够了:

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

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

如果您提供有关如何显示分组结果的更多具体信息,则可能会找到更好的方法。