1

私はページとコミットのモデルを持っています。ページには多くのコミットがあります。しかし、ページの最後のコミットを 1 つだけ取得する必要がある場合もあれば、ページのコミットの履歴を取得する必要がある場合もあります (最後の 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] for ex.)?

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 に答える