在項目開發的過程中;有時候會有多個參數 去用在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; }