Kohana 3 ORM:高级查询,效率

Tes*_*rex 4 php orm kohana kohana-3

所以我们都知道Kohana 3的文档绝对是可怕的.那么如何构建以下查询,我有"玩家"和"龙"模型?

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

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

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

ale*_*lex 6

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

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

然而,在说这个,你想要的是使用Kohana 3的ORM.


来自Pixel Developer.

where('field', 'IN', range(1, 3));
Run Code Online (Sandbox Code Playgroud)

这具有不具有循环的优点.:-)