Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Orm MVC复杂查询和模型使用_Orm_Kohana_Php_Model View Controller_Design Patterns - Fatal编程技术网

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的角度来看什么是最合适的 补充资料 我正在使用中 查询:

我有三张桌子

  • 用户
  • 运动
  • 链接
他们有一对多的关系。用户有很多活动。这场运动有很多联系

我通过计算每个用户拥有的链接总数来计算顶级用户。因此,我加入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类可以返回要迭代的用户实例。当前我使用此技术。因为用户与结果表有一对多关系。当前我使用此技术。因为用户与结果表有一对多关系。