【发布时间】:2012-11-15 12:40:10
【问题描述】:
如果我得到这个:
$result =
DB::select(
'orders.date_created'
)
->from('orders')
->execute()->as_array();
正常情况下,显示所有订单 date_created。现在我可以按用户过滤,这样做 ?user_id=112
这会让我有这个:
if(isset($get['user_id']))
{
$result =
DB::select(
'orders.date_created'
)
->from('orders')
->where('user_id', '=', $get['user_id'])
->execute()->as_array();
}else{
$result =
DB::select(
'orders.date_created'
)
->from('orders')
->execute()->as_array();
}
虽然这对我来说没问题,但是当我有 4 个参数要从(4 个 where 语句)中过滤掉时,这会变成非常丑陋的代码,例如 ?user_id=112&quantity=2&...
我能否以某种方式制作一个内联 if/action 语句,如果 $get['user_id'] 中没有任何内容,它将获取所有 user_ids 吗?
所以我最终只能得到这个:
$result =
DB::select(
'orders.date_created'
)
->from('orders')
->where('user_id', '=', (isset($get['user_id']) ? $get['user_id'] : 'GRAB ALL!'))
->execute()->as_array();
或者还有其他更好的方法吗?
尝试查看 Kohana 文档是否有 ->if()->where()->exitif()..(只是对它如何工作的一些想象)
【问题讨论】:
标签: php mysql kohana kohana-3 query-builder