浏览Yii与限制的关系

时间:2013-02-18 13:34:13

标签: yii relational-database yii-cmodel

我有Community模型和Content模型。每个Content都有一个community_id列。我创建了这个简单的关系:

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

(注意订单)

在我要显示的CommunityController中说出前20个内容(然后在另一个ajax动作中获得下一个20,不用担心)。

我可以通过Criteria来做,比如:

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

但代码对我来说太过分了(太久了),我觉得我并没有使用我创建的所有关系。有更简单的方法吗?或者我在找不到问题的地方?

2 个答案:

答案 0 :(得分:1)

您可以使用CActiveRecord::getRelated()并添加新条件作为最后一个参数。您的代码可能类似于

$criteria = new CDbCriteria;
$criteria->limit = 20;
$contents=$model->getRelated('contents',true,$criteria);

答案 1 :(得分:1)

您可以将关系用作方法并在那里传递标准:

$contents = $model->contents(array('limit' => 20));