ActiveRecord& PHP:定义两个模型之间不同关联的最佳方法

时间:2012-10-06 16:20:59

标签: php mysql sql activerecord orm

我有模型页面和提交。 Page有很多提交。 但有时我只需要为页面提供最后一次提交,有时需要获取页面提交的历史记录(最后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]为ex。)?

1 个答案:

答案 0 :(得分: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

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