我正在一个遗留的Cakephp 2系统上工作,在弄清楚分页应该如何工作时遇到了一些问题。
我有一个Users
模型,一个SystemSessions
模型和一个Locations
模型。Users hasmany SystemSessions
和每个SystemSession
都有一个location_id
。我正在尝试找出如何对Users
分页,以便只显示具有特定location_id
的Users
。
如果我尝试:
$conditions['conditions']['User.role'] = 'User';
$conditions['contain'] = array(
'SystemSession' => array(
'conditions' => array(
'SystemSession.location_id' => '34'
)
)
);
这将拉回每个User
,在这些用户下,将有location_id
为34的SystemSessions
,但是,没有来自该位置的SystemSessions
的Users
也出现在结果中(只是SystemSessions
数组为空)。
我想要的是只从那个位置拉回拥有SystemSessions
的Users
,从那个特定位置没有得到SystemSessions
的Users
,不应该出现在结果中。
通常,我可以循环遍历并删除不需要的结果,但因为我试图对结果分页,这将取消所有分页等操作。
有谁能给予我点建议吗?
1条答案
按热度按时间s2j5cfk01#
您必须复制您在SQL级别上所做的来解决这个问题,例如,使用连接来拉入并过滤关联数据。您不能单独使用
contain
来解决这个问题,因为hasMany
关联是在单独的查询中检索的,因此您的条件只影响关联数据。假设
$conditions
是您的查找器选项:这将在
system_sessions
表上应用一个INNER
连接,并满足您所需的条件,例如:从而过滤掉不存在匹配的所有用户。
另请参阅
*说明书〉模型〉关联:将模型链接在一起〉连接表