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
中阅读有关协会的更多信息
我编写了以下代码来获取每个事件的用户记录,但我只想获取每个事件的前 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
中阅读有关协会的更多信息