gpt4 book ai didi

php - 使用 Kohana Query Builder 构建查询

转载 作者:行者123 更新时间:2023-11-29 14:11:45 25 4
gpt4 key购买 nike

如果我得到这个:

    $result = 
DB::select(
'orders.date_created'
)
->from('orders')
->execute()->as_array();

正常情况下,显示创建日期的所有订单。现在我可以按用户进行过滤,执行此操作?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()..(只是对其如何工作的一些想象)

最佳答案

您可以在执行之前修改查询对象:

$query = DB::select()->from(...);
if (isset($get['user_id'])) {
$query->where('user_id', '=', intval($get['user_id']));
}
if (isset($get['quantity'])) {
$query->where('quantity', '=', floatval($get['quantity']));
}
$result = $query->execute()->as_array();

关于php - 使用 Kohana Query Builder 构建查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13397715/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com