我遇到了极限问题。我使用的代码如下:
$model = PostCategory::model();
$record = $model->with(array(
'posts'=>array(
'order'=>'posts.createTime DESC',
'limit'=>3,
))->findByPK($id);
我想限制查询用于分页的帖子。我还尝试添加
'together'=>true
在限制之后,这也没有帮助。
感谢任何帮助。
答案 0 :(得分:6)
这肯定会有效,只是经过测试:
$model = PostCategory::model();
$record = $model->with(array(
'posts'=>array(
'order'=>'posts.createTime DESC',
))->findByPK($id,
array('limit'=>3,'together'=>true) // adding this works
);
答案 1 :(得分:1)
以下是parameterized named scopes上的wiki。
但是如果你想在使用Relational Query时过滤RELATED表中的记录,那么你应该使用defaultScope()。
以下是defaultScope上的wiki,还显示了在不需要时绕过defaultScope的方法。
答案 2 :(得分:0)
您可以在Post模型中添加范围并使用
public function recent( $limit = 3 ) {
$this->getDbCriteria()->mergeWith(array(
'order' => $this->getTableAlias(false, false).'.createTime DESC',
'limit' => (int) $limit,
));
return $this;
}
$record = $model->with('posts:recent')->findByPK($id);
你的代码清晰可读。
查看有关范围的更多信息 http://www.yiiframework.com/doc/guide/1.1/en/database.ar#named-scopes
此论坛发布了如何使用 - > with 为您的范围提供参数 http://www.yiiframework.com/forum/index.php/topic/23358-parameterized-vs-named-scopes-question-using-yii-118/