1

我有模型 Page 和 Commit。页面有很多提交。但有时我只需要获取页面的最后一次提交,有时需要获取页面提交的历史记录(最后 20 次或全部)。

我为模型编写了这段代码:

class Page extends ActiveRecord\Model {
    static $has_many = array(
        array('commits',
            'select'=> 'content',
            'order' => 'id DESC',
            'limit' => 1
        ));
}
class Commit extends ActiveRecord\Model {
    static $belongs_to = array(
        array('page'));
}

那么我需要做些什么才能有机会显示所有提交(例如 ['limit' => 20])?

4

1 回答 1

0

这是一种解决方法,但这应该可以做到……有点模拟 Rails 的作用域:

class Page extends ActiveRecord\Model {
    static $has_many = array(
        array('limited_commits',
            'class_name' => 'Commit',
            'select'=> 'content',
            'order' => 'id DESC',
            'limit' => 1
        ),
        array('all_commits',
            'class_name' => 'Commit',
            'select' => 'content',
            'order' => 'id DESC'
        )
    );
}
class Commit extends ActiveRecord\Model {
    static $belongs_to = array(
        array('page'));
}

然后只需使用您需要的“范围”:

Page::first->limited_commits
Page::first->all_commits

这不是一个真正的整体解决方案,但它应该可以解决问题......

于 2012-10-06T17:27:00.200 回答