我想知道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个不同的查询。
答案 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;
}
如果您提供有关如何显示分组结果的更多具体信息,则可能会找到更好的方法。