laravel中有条件使用where

本文介绍了两种在PHP项目中根据条件动态构建SQL查询的方法:一种是使用原生MySQL语句拼接where子句;另一种则是利用Laravel框架提供的查询构建器实现相同功能。这两种方法都允许根据传入的不同参数灵活地添加过滤条件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在项目开发的过程中;有时候会有多个参数 去用在where查询中;那么这里的where语句是可能有也可能没有的

1.用原生的mysql语句来实现

private function getData($type, $status, $data_id, $start_time, $end_time, $size, $page, $id)
    {
        $type = trim($type);
        $status = trim($status);
        $data_id = trim($data_id);
        $start_time = strtotime(trim($start_time)); // 转换为uninx时间戳
        $end_time = strtotime(trim($end_time));
        $size = trim($size);
        $page = trim($page);
        $id = trim($id);

        $where = ' where 1=1';
        if ($type) {
            $where .= " AND dp.task_type = $type";
        }
        if ($status) {
            $where .= " AND d.data_status = $status";
        }
        if ($data_id) {
            $where .= " AND d.id = '$data_id'";
        }
        if ($start_time) {
            $where .= " AND d.dial_time >= $start_time";
        }
        if ($end_time) {
            $where .= " AND d.dial_time <= $end_time";
        }
        if ($id) {
            $where .= " AND b.id = $id";
        }

        $sql = "SELECT d.id,d.dial_time,d.time_len,d.record,d.called_phone  FROM a_data as d LEFT JOIN a_data_packet as dp ON d.data_packet_id = dp.id LEFT JOIN a_business as b ON dp.business_id = b.id ";
        $sql .= $where;
        $sql .= ' order by dial_time desc';
        $sql .= " limit ".($page-1)*$size.", $size"; // 偏移量,每一页显示几条
        $res = DB::select($sql);

        return $res;
    }

 

2.用laravel的where语句来实现

private function getExtData($status, $data_id, $all_extract)
    {
        $db = \AiBusiness\Models\Data::select('id', 'dial_time','time_len', 'kh_phone')->where('data_status', $status);
        if ($all_extract == 1) {
            if ($data_id) {
                $db->whereIn('id', $data_id);
            }
        }
        $extract_data = $db->get();

        return $extract_data;
    }

 

转载于:https://www.cnblogs.com/djwhome/p/9322042.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值