如何使用 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()
并对其进行迭代,得到所有 ->name
s
正如您在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 选择以及在哪里 - 如果 - 在?的主要内容,如果未能解决你的问题,请参考以下文章