Kohana 3 ORM:高级查询,效率

问题描述:

所以我们都知道Kohana 3的文档是非常可怕的。那么如何构建下面的查询,我有一个“玩家”和“龙”模型?Kohana 3 ORM:高级查询,效率

SELECT * FROM `dragons` JOIN `players` ON (`dragons`.`player_id` = `players`.`player_id`) WHERE `uid` IN (1,2,3) ORDER BY `dragons`.`id` ASC 

我可以使用ORM::factory('dragon')->join("players")->on("dragons.player_id", "=", "players.player_id")去连接的一部分,但我不能做in条款。 Kohana 3的ORM中没有in函数。我尝试了where函数,但它引用了第三个参数的引号,所以我的ID列表变成了一个字符串,查询变得无效。那么我能做什么?我无法弄清楚如何将自定义位的SQL添加到我的ORM加载查询中。再次,因为文档不存在。

我现在能想到的唯一方法就是加载所有合适的玩家,循环并取回他们的龙。但是,这看起来真的很愚蠢 - 比没有必要的方式更多的查询。我之前有这样的感觉,使用ORM在查询结束时会让事情变得非常低效,以便让代码更容易一些。这是真的?

ORM可以产生一些不太令人满意的查询 - 但它也加快了开发时间并为您提供了抽象(有些人认为他们不应该再用手写SQL了)。

大多数情况下,我更喜欢复杂Web应用程序中的SQL。

然而,在说,你想要的是可能使用Kohana 3的ORM。


The Pixel Developer

where('field', 'IN', range(1, 3)); 

这具有没有循环的优点。 :-)

+0

@The Pixel开发人员:是的,这是可能的 – zerkms 2010-11-15 00:05:18

+1

@The像素开发人员你把我平庸的答案变成了一个很好的答案 - 谢谢! – alex 2010-11-15 00:07:19

+1

没问题alex。对于3条线不太值得自己回答,因为你已经完成了大部分工作,所以我认为最好是改进你的:) – 2010-11-15 00:11:26