Php Kohana 3 ORM:高级查询、效率

Php Kohana 3 ORM:高级查询、效率,php,orm,kohana,kohana-3,Php,Orm,Kohana,Kohana 3,所以我们都知道Kohana 3的文档非常糟糕。那么,我如何构造下面的查询,其中有一个“Player”和“Dragon”模型 我可以在(“dragons.player\u id”,“=”,“players.player\u id”)上使用ORM::factory('dragon')->join(“players”)->进入连接部分,但我不能在子句中执行。Kohana 3的ORM中没有函数。我尝试了where函数,但它在第三个参数周围加了引号,因此我的ID列表变成了字符串,查询变得无效。那我该怎么办

所以我们都知道Kohana 3的文档非常糟糕。那么,我如何构造下面的查询,其中有一个“Player”和“Dragon”模型

我可以在(“dragons.player\u id”,“=”,“players.player\u id”)上使用
ORM::factory('dragon')->join(“players”)->进入连接部分,但我不能在
子句中执行
。Kohana 3的ORM中没有
函数。我尝试了
where
函数,但它在第三个参数周围加了引号,因此我的ID列表变成了字符串,查询变得无效。那我该怎么办?我不知道如何将定制的SQL添加到ORM加载查询中。同样,因为文档不存在


我现在唯一能想到的方法就是加载所有合适的玩家,循环他们,然后取回他们的龙。但这似乎真的很愚蠢——询问太多了。我以前也有过这样的感觉,使用ORM会使查询端的效率变得非常低,从而使编写代码稍微容易一些。这是真的吗?

ORM可以生成一些不太理想的查询,但它也加快了开发时间,并为您提供了一种抽象(有些人觉得他们不应该再手工编写SQL了)

大多数时候,我更喜欢复杂web应用程序中的SQL

然而,在这样说的时候,您想要的是使用Kohana3的ORM



这样做的优点是没有循环。:-)

@像素开发者:是的possible@The像素开发者你把我平庸的答案变成了一个好答案-谢谢!没问题,亚历克斯。3行的答案并不值得,因为你已经完成了大部分工作,我认为最好改进一下:)好的,那么如果第三个where()参数是字符串,它在查询中会被字符串化,但是如果它是数组,那就好了?谢谢@泰塞雷斯:P
SELECT * FROM `dragons` JOIN `players` ON (`dragons`.`player_id` = `players`.`player_id`) WHERE `uid` IN (1,2,3) ORDER BY `dragons`.`id` ASC
where('field', 'IN', range(1, 3));