CakePHP 2.4 在单个 Select 查询中为每个事件获取 10 条记录

CakePHP 2.4 fetch 10 records per event in single Select query

我编写了以下代码来获取每个事件的用户记录,但我只想获取每个事件的前 10 个用户。请指导我如何更新我当前的查询以获得此:

$registrant = $this->RmrEventsRegistrant->find('all', array('conditions' =>
    array(
        array('RmrEventsRegistrant.event_id' => $event_ids)
   ),
   'fields' => array('RmrEventsRegistrant.id,RmrEventsRegistrant.first_name,RmrEventsRegistrant.last_name,RmrEventsRegistrant.email,RmrEventsRegistrant.event_id'),
   'order' => array('RmrEventsRegistrant.created'),
));

其中 $event_ids 是 event_id.

的数组

首先,您需要定义 RmrEventsRegistrant 模型和用户模型之间的关系。 在您的情况下,关系是事件 hasMany 用户,它将在您的事件模型中定义如下。

class RmrEventsRegistrant extends AppModel { 
    public $useTable = 'rmr_events_registrant'; 

    public $hasMany = array(
        'User' => array(
            'className' => 'User',
            'limit' => 10,
        )
    );

} 

由于在 hasMany 关系中您已将 limit 参数定义为 10,因此您无需对已发布的查询进行任何更改。 Cakephp 将为其检索的每个事件自动获取 10 个用户。

您可能需要更改 hasMany 关联中用户模型的类名,具体取决于您如何定义它。就像您的事件模型被定义为 RmrEventsRegistrant。

您可以在 Cookbook

中阅读有关协会的更多信息