2

私はCommunityモデルとモデルを持っていContentます。それぞれContentcommunity_id柱があります。この単純な関係を作成しました。

$relations['contents'] = array(self::HAS_MANY, 'Content', 'community_id','order'=>'weight DESC, id DESC');

(順序に注意してください)

上位 20 のコンテンツを表示しCommunityControllerたい場合 (次に、別の ajax アクションで次の 20 を取得します。心配する必要はありません)。

おそらく、次のような基準を介して行うことができます。

$criteria = new CDbCriteria;
$criteria->compare('community_id',$model->id);
$criteria->limit = 20;
$criteria->order = 'weight DESC, id DESC';
$contents = Content::model()->findAll($criteria);

しかし、コードはやり過ぎ (長すぎる) に見え、作成した Relation をまったく使用していないように感じます。もっと簡単な方法はありますか?それとも、ない問題を探していますか?

4

2 に答える 2

1

リレーションをメソッドとして使用し、そこに基準を渡すことができます。

$contents = $model->contents(array('limit' => 20));
于 2013-02-20T09:48:34.253 に答える