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

azv*_*azv 2 cakephp associations

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

Dan*_*ung 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
    )
);  
Run Code Online (Sandbox Code Playgroud)

(CakePHP Book页面的相应道具,我偷了这个代码.)


小智 5

一个选项.在你的控制器中:

$this->User->hasMany['Item']['limit'] = 1;
Run Code Online (Sandbox Code Playgroud)

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

$this->User->hasMany['Item']['order'] = 'Item DESC';
Run Code Online (Sandbox Code Playgroud)