0

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

假设我有以下模型:

Tag
------
id
name    
type_id

假设有 5 种不同类型的Tags。我希望能够在我的索引中显示部分中的所有标签type_id。有没有一种 Yii 方式来完成这个?

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

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

然后在每个部分中,我可以执行以下操作:

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

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

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

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

4

2 回答 2

2

使用 ActiveRecord 时,只需在 DBCriteria 中指定“索引”。所以在查询中:

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

这将返回您之后的 assoc 数组。TBF 它可能执行完全相同的代码,但这显然比在任何地方执行它更容易使用。

于 2011-11-10T12:09:19.103 回答
0

假设您的活动记录类被调用MyActiveRecordClass,最简单的方法应该足够了:

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

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

如果您提供有关您打算如何显示分组结果的更具体信息,则可能会制定出更好的方法。

于 2011-11-10T00:04:26.323 回答