Orm MVC复杂查询和模型使用
我有三张桌子Orm MVC复杂查询和模型使用,orm,kohana,php,model-view-controller,design-patterns,Orm,Kohana,Php,Model View Controller,Design Patterns,我有三张桌子 用户 运动 链接 他们有一对多的关系。用户有很多活动。这场运动有很多联系 我通过计算每个用户拥有的链接总数来计算顶级用户。因此,我加入3个表,并按用户分组,然后选择user和sum(links) 此查询涉及3个表。我已经为这些表中的每一个设置了3个模型类。现在我的问题是我应该把这个查询放在哪个模型中?它应该进入用户模型(我称之为top10users)吗?或者有其他方法通过利用现有的3个模型来获取这些信息。我想知道从MVC的角度来看什么是最合适的 补充资料 我正在使用中 查询:
- 用户
- 运动
- 链接李>
SELECT u.id,
u.name,
SUM(l.num_visited) total_num_visited
FROM users u
JOIN campaigns c
ON ( u.id = c.user_id )
JOIN links l
ON ( c.id = l.campaign_id )
GROUP BY u.id
ORDER BY total_num_visited DESC
LIMIT 10;
我会说找topusers()。没有“正确的”回答这个问题,不是在技术背景下。但应该清楚地理解。因此,如果你想获得顶级用户,为什么要将这种方法放在其他模型中而不是用户中?想想一个新的团队成员,他获得了你的代码:当不在用户模型中时,你会在哪里寻找顶级用户?我想说,go for topusers().没有“正确的”这个问题的答案,不是在技术背景下。但应该清楚地理解。因此,如果你想获得顶级用户,为什么要将这种方法放在其他模型中而不是用户中?想想一个新的团队成员,他获得了你的代码:当不在用户模型中时,你会在哪里寻找顶级用户?没有严格的理由这样做t您的模型必须与一个表一一对应。在这种情况下,为顶级用户提供一个模型可能最有意义,特别是因为它依赖于将多个相关表中的数据连接起来
然后,如果与顶级用户相关的特定业务逻辑与标准用户类不相关,则可以将其分离并保持干净。您可以始终从TopUser提供帮助器/工厂方法,如果需要深入查看,这些方法将返回用户、活动或链接的实例。没有严格的理由认为您的模型绝对具有可用性使用表进行1对1映射。在这种情况下,为顶级用户提供一个模型可能最有意义,特别是因为它依赖于将多个相关表中的数据连接起来
然后,如果与顶级用户相关的特定业务逻辑与标准用户类不相关,则可以将其分开并保持干净。您可以始终从TopUser提供帮助器/工厂方法,如果需要向下搜索,可以返回User、Campaign或Link的实例。那么您是指向下搜索,我应该提供一种返回方法顶级用户“用户类”实例?是的。因此,例如,TopUser类可以返回用户实例进行迭代。因此,您的意思是深入研究,我应该提供一种返回顶级用户“用户类”的方法实例?是的。例如,TopUser类可以返回要迭代的用户实例。当前我使用此技术。因为用户与结果表有一对多关系。当前我使用此技术。因为用户与结果表有一对多关系。