所以我们都知道Kohana 3的文档绝对是可怕的。那么,我如何构造下面的查询,其中我有一个"Player“和"Dragon”模型?
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子句。在Kohana3的ORM中没有in函数。我尝试过where函数,但它在第三个参数两边加了引号,因此我的it列表变成了一个字符串,查询也变得无效。那么我能做什么呢?我不知道如何在ORM加载查询中添加自定义的SQL代码。再说一次,因为文档不存在。
我现在能想到的唯一方法就是加载所有合适的玩家,循环通过它们,并获取它们的龙。但这看起来真的很愚蠢--比必要的查询要多得多。我以前有过这样的感觉,使用ORM会使查询端的效率变得非常低,以使其更容易编码。这是真的吗?
发布于 2010-11-15 07:55:46
ORM可以产生一些不太理想的查询-但它也加快了开发时间,并给了你一个抽象(有些人觉得他们再也不应该手工编写SQL了)。
大多数时候,我更喜欢在复杂的web应用程序中使用SQL。
然而,通过使用Kohana3的ORM,你想要的是可能的。
where('field', 'IN', range(1, 3));这有一个优点,那就是没有循环。:-)
https://stackoverflow.com/questions/4180435
复制相似问题