如何使用 Kohana ORM 选择以及在哪里 - 如果 - 在?

Posted

技术标签:

【中文标题】如何使用 Kohana ORM 选择以及在哪里 - 如果 - 在?【英文标题】:Howto select an where - if - in with Kohana ORM? 【发布时间】:2013-11-17 12:08:12 【问题描述】:

我正在尝试使用 Kohana ORM 执行此操作,但不知道如何执行此操作:

SELECT t.name
FROM t
WHERE IF(t.s1_id = 1, t.s2_id IN (2,3,4), t.s1_id IN (2,3,4))

【问题讨论】:

【参考方案1】:

我自己没有使用过这个,但是通过 floww 的转换,这应该可以解决问题

$model = ORM::factory('t')->and_where_open()
    ->where('s1_id', '=', '1')
    ->where('s2_id', 'IN', array(2,3,4))
    ->and_where_close()
    ->or_where('s1_id', 'IN', array(2, 3, 4));

如果您希望得到一个结果,请立即使用$model->find(),您可以通过$model->name 访问该名称。

如果您期望多个结果,请使用 $model->find_all() 并对其进行迭代,得到所有 ->names


正如您在API browser 中看到的,ORM 不支持IF 语句。如果您不想要像发布的那样硬编码的解决方案,我认为您必须自己添加此功能。

【讨论】:

【参考方案2】:

试试这个:

SELECT t.name FROM t WHERE (t.s1_id = 1 and t.s2_id IN (2,3,4) ) or ( t.s1_id IN (2,3,4) )

【讨论】:

以上是关于如何使用 Kohana ORM 选择以及在哪里 - 如果 - 在?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Kohana 中使用 ORM 连接表

Kohana ORM 按日期选择记录

kohana orm 选择具有所有给定角色的用户

如何在 Kohana 3 ORM 关系中指定两个键

Kohana 3 ORM:如何使用 2 个多对多关系执行查询

如何在 Kohana 3 中链接多个 ORM 关系?