7

typeと modelAの関係を持つモデルがあります。HAS_MANYB

Bの属性は次のとおりです。

id,
user_id,
message,
date,
parent_message_id

モデルの要素をB日付順 (降順) にする必要がありますが、 がparent_message_idnull と異なる場合、考慮される日付は に対応する日付である必要がありますparent_message_id

リレーションの順序付けに使用される基準をカスタマイズすることは可能ですか?

4

2 に答える 2

10

わかりました、私はこれを次の方法で解決しました:モデルA HAS_MANYモデルB、したがって、関係メソッドを次のように再定義しました:

public function relations()
{
    return array(
        'messages' => array(self::HAS_MANY, 'WallMessages', 'liga_id',
            'condition'=>'specific_post.parent_message_id IS NULL', 
            'order'=>'specific_post.date DESC', 
            'alias'=>'specific_post'),
    );
}

したがって、これらのメッセージの日付のみを親 ID なしで比較します。欠点は、各投稿の「子メッセージ」にアクセスする必要があることです...しかし、別の回避策が見つかりませんでした. 助けてくれてありがとう!

于 2011-07-09T14:27:32.503 に答える
0

同じ列に従って要素をソートすることしかできないと思います。しかし、あなたを助けることができるデータベースの忍者がいるかもしれません.

完璧な世界では、afterFind()メソッドを任意のレベルでのカスタマイズに使用できます。並べ替えだけでなく、他の値の一部を変更することもできます。プランオーダーほど速くはないかもしれませんが、このようにして MySQL サーバーを少し負荷から解放します。さらに、自動的に呼び出されます。乾杯

于 2011-07-04T07:53:57.797 に答える