代码之家  ›  专栏  ›  技术社区  ›  Tesserex

Kohana 3 ORM:高级查询,效率

  •  4
  • Tesserex  · 技术社区  · 14 年前

    所以我们都知道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 条款。没有 在里面 在Kohana 3的ORM中的函数。我试过了 where 函数,但它在第三个参数周围加上引号,因此我的id列表将变成一个字符串,查询将变为无效。那我该怎么办?我不知道如何在ORM加载查询中添加自定义的SQL位。再次,因为文档不存在。

    我现在唯一能想到的方法就是装载所有合适的玩家,绕过他们,把他们的龙带回来。但这似乎真的很愚蠢-比必要的查询多得多。我以前也有过这样的感觉,使用ORM会使查询端的工作效率极低,从而使编写代码稍微容易一些。这是真的吗?

    1 回复  |  直到 14 年前
        1
  •  6
  •   Community CDub    7 年前

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

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

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


    The Pixel Developer .

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

    这样做的好处是没有循环。:-)