php - CakePHP 2.4 在单个 Select 查询中为每个事件获取 10 条记录
问题描述
我制作了以下代码来获取每个事件的用户记录,但我只想获取每个事件的前 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 关联中用户模型的 className,具体取决于您如何定义它。就像您的事件模型被定义为 RmrEventsRegistrant。
您可以在Cookbook中阅读有关关联的更多信息
推荐阅读
- amazon-web-services - 跨 AZ 的 AWS DNS 解析
- excel - 如何将图像文档描述重新排列为excel中的实际值
- r - R和Stata中没有截距的回归
- google-apps-script - 可以将数千行技术语言翻译成另一种语言的 Google Script
- pycharm - PyCharm 中 Faust worker 的调试模式
- git - 如何在 Azure DevOps 的 PR 完成时添加 Git Hook commit-msg?
- google-cloud-platform - (gcloud.dataflow.flex-template.build) PERMISSION_DENIED:调用者没有权限
- gitlab-ci - 在 gitlab-ci 中触发管道失败
- java - 在横向模式下无法隐藏导航栏
- django - Django创建嵌套模型