如何限制关联模型的记录数

时间:2010-05-31 08:17:35

标签: cakephp associations

在一个简单的CakePHP模型中,其中User hasMany Item(和Item belongsTo User) - 假设有50个用户,每个项目有10个。 我怎样才能找到()只有5个用户,每个用户最近有5个项目? 当我在查找中施加限制时,它仅限制用户数量,而不是相关项目的数量。

2 个答案:

答案 0 :(得分:7)

在hasMany模型声明中指定 limit 属性。

var $hasMany = array(
    'Comment' => array(
        'className'     => 'Comment',
        'foreignKey'    => 'user_id',
        'conditions'    => array('Comment.status' => '1'),
        'order'    => 'Comment.created DESC',
        'limit'        => '5',
        'dependent'=> true
    )
);  

(我偷走了这段代码的CakePHP Book page的合适道具。)

答案 1 :(得分:5)

一个选项。在您的控制器中:

$this->User->hasMany['Item']['limit'] = 1;

这将限制项目数量。我没有测试订单,但这应该有效:

$this->User->hasMany['Item']['order'] = 'Item DESC';