0

Yii にはアイテムをタイプごとにグループ化するための効率的な方法があるかどうか疑問に思っています。

次のモデルがあるとします。

Tag
------
id
name    
type_id

そして、5 種類のTags があるとしましょう。セクション内のすべてのタグをインデックスに表示できるようにしたいと考えていますtype_id。これを達成するYiiの方法はありますか?

フレームワークの外では、DB からフェッチされた結果が次のように格納されるような関数を記述します。

$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'));

それはあなたの後の連想配列を返します。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 に答える