我想知道Yii是否有一种有效的方法来按类型对项目进行分组。
假设我有以下模型:
Tag
------
id
name
type_id假设有5种不同类型的部分,我希望能够在我的索引中按type_id在Tag中显示所有标记。有什么办法可以做到这一点吗?
在框架之外,我会编写一个函数,这样从DB获取的结果就会像这样存储:
$tags[$typeID][] = $tag;然后,在每个部分中,我可以这样做:
foreach( $tags[$typeID] as $tag )
{
// Here are all tags for one $typeID
}但我很难弄清楚如何在Yii中做到这一点:
A)首先循环遍历整个结果集并重写它,
B)运行5个不同的查询。
发布于 2011-11-10 20:09:19
使用ActiveRecord时,只需在DBCriteria中指定“索引”即可。所以在查询中这样做:
ActiveRecordClass::model()->findAll(array('index'=>'type_id'));这将返回一个你想要的assoc数组。TBF它可能执行完全相同的代码,但这显然比在任何地方执行它更容易使用。
发布于 2011-11-10 08:04:26
假设您的活动记录类名为MyActiveRecordClass,那么最简单的方法就足够了:
$models = MyActiveRecordClass::model()->findAll();
$groupedModels = array();
foreach ($models as $model) {
$groupedModels[$model->typeID][] = $model;
}如果您提供了更具体的信息,说明您打算如何显示分组的结果,那么可能会找到更好的方法。
https://stackoverflow.com/questions/8073398
复制相似问题