2013-02-18 87 views
2

我有一個Community模型和Content模型。每個Content有一個community_id列。我創造了這個簡單的關係:瀏覽Yii關係限制

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

(注意順序)

CommunityController我想顯示說,前20名的內容(然後在另一個阿賈克斯行動得到未來20,沒有關於後顧之憂) 。

我大概可以通過標準做到這一點,是這樣的:

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

但代碼看起來矯枉過正我(太長了),我覺得我不是在我創建的所有關聯使用。有一種更簡單的方法嗎?或者我在哪裏找不到問題?

回答

1

您可以使用您的關係作爲一種方法,並通過標準有:

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

您可以使用CActiveRecord::getRelated()並添加新條件作爲最後一個參數。您的代碼可能看起來像

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