ThinkPHP模型 、CI查询构造器 类 / 表单验证类 (类库参考) 、DbHelper
CI框架获取 控制器名 和 方法名
$con = $this->router->fetch_class(); // 获取控制器名 $func = $this->router->fetch_method(); // 获取方法名
加载配置文件 config, 配置类 使用手册
$this->load->config('constants'); // 加载文件 config/constants.php $key_match = $this->config->item('operate_device_cmd'); $this->load->config('my');
$this->config->load('common/config_holiday', TRUE); // 统一返回状态码loading $holiday = $this->config->item('holiday', 'common/config_holiday'); // 法定节假日 $workday = $this->config->item('weekenworkday', 'common/config_holiday'); // 补假日
class Message extends BaseController{ /** * 微信公众号 回调处理 */ public function index() { $CI = &get_instance(); $CI->load->model('m_wechat_apps'); $CI->load->model('m_wechat_fans'); $CI->load->config(ENVIRONMENT . '/config_wechat'); $wechat_driver = $this->config->item('wechat_driver'); $options = [ 'appid' => $wechat_driver['appId'], // 填写高级调用功能的appid 'appsecret' => $wechat_driver['appSecret'], // 填写高级调用功能的密钥 'encodingaeskey' => $wechat_driver['encodingaeskey'], // 填写加密用的EncodingAESKey 'token' => $wechat_driver['token'], // 填写你设定的key ]; $CI->load->library('wx/CI_Wechat', $options); $CI->ci_wechat->valid(); $type = $CI->ci_wechat->getRev()->getRevType(); switch ($type) { case Wechat::MSGTYPE_TEXT: // 自动回复对话 //$CI->ci_wechat->text("欢迎来到 xxx 公众号")->reply(); exit; break; case Wechat::MSGTYPE_EVENT: $eventInfo = $CI->ci_wechat->getRevEvent(); $event = isset($eventInfo['event']) ? $eventInfo['event'] : ''; switch ($event) { case Wechat::EVENT_SUBSCRIBE; // 关注 $original_id = $CI->ci_wechat->getRevTo(); $open_id = $CI->ci_wechat->getRevFrom(); // 微信粉丝信息 $fans_info = $CI->ci_wechat->getUserInfo($open_id); $unionid = isset($fans_info['unionid']) ? $fans_info['unionid'] : ''; $fans = [ 'app_id' => $options['appid'], 'original_id' => $original_id, 'open_id' => $open_id, 'union_id' => $unionid, 'is_subscribe' => 1, 'subscribe_time' => date('Y-m-d H:i:s'), ]; $CI->m_wechat_fans->save_fans($fans); break; case Wechat::EVENT_UNSUBSCRIBE; // 取消关注 $original_id = $CI->ci_wechat->getRevTo(); $open_id = $CI->ci_wechat->getRevFrom(); $fans = [ 'app_id' => $options['appid'], 'original_id' => $original_id, 'open_id' => $open_id, 'is_subscribe' => 0, 'unsubscribe_time' => date('Y-m-d H:i:s'), ]; $CI->m_wechat_fans->save_fans($fans); break; } break; case Wechat::MSGTYPE_IMAGE: break; default: //$CI->ci_wechat->text("欢迎来到 xxx 公众号(2)")->reply(); } } }
加载助手 helper
$this->load->helper('time'); // 加载文件 helpers/time_helper.php
加载模型 model
$this->load->model('M_car_device_info'); // 加载文件 models/M_car_device_info.php $device_info = $this->M_car_device_info->get_record('xxx'); // 输出 SQL echo $this->m_car_device_position->db->last_query();
加载视图 view
$this->load->view('Hardware_upgrade/software_list', $data, false); // 加载文件 views/Hardware_upgrade/software_list.php
加载服务 service
$this->load->service('S_device_ctrl'); // 加载文件 models/M_car_device_info.php $this->S_device_ctrl->send_data_to_device();
加载其他类库 library
$this->load->library('log/Logger'); // 加载文件 libraries/log/Logger.php $this->load->library('map/Baidu_map_api');
自定义 library 文件中, 引入 其他 类文件
// 日志 $CI = &get_instance(); $CI->load->library('log/Logger'); $CI->Logger->logs_debug("百度地图, 经纬度转换失败: " . $coords . " ", 'device_notify'); // 缓存 $CI = &get_instance(); // 设置 $CI->load->library('cache/Redis_handler'); $CI->redis_handler->set($cache_key, $value); $CI->redis_handler->expire($cache_key, $cache_time); // 获取 $CI->redis_handler->get($cache_key);
参考:http://codeigniter.org.cn/user_guide/general/creating_libraries.html
缓存 cache
// 缓存 Redis (在 System 中) libraries/Cache/drivers/Cache_redis.php // 待发送数据 $send_data = array( 'device_no' => $device_info['device_no'], // 设备号 'opera_cmd' => $operate_type[$param['operate_type']], // 操作命令 'access_ip' => $device_info['access_ip'], 'access_port' => $device_info['access_port'], 'fd' => $device_info['fd'], ); // 放到 redis 队列 中去 (用 redis 扩展的原生方法) $this->load->driver('Cache'); // 加载文件 libraries/Cache/drivers/Cache_redis.php $result = $this->cache->redis->get_instance()->rpush('client_pending_package', json_encode($send_data));
打印SQL
echo $this->db->last_query();
直接执行完整SQL
$list = $this->db->query($sql)->result_array();
生成查询结果
1、$this->db->result_array() :返回 多维数组 (多条)记录
2、$this->db->row_array():返回 一维数组(单条)记录
参考:http://codeigniter.org.cn/user_guide/database/results.html
返回插入的自增ID
/** * 插入单条记录 */ public function insert_data($data) { $this->db->insert($this->_tablename, $data); return $this->db->insert_id(); } /** * 插入多条记录 */ public function insert_more_data($data) { $this->db->insert_batch($this->_tablename, $data);
分页
// 查询分页总数
$this->db->count_all_results('my_table', FALSE);
// 渲染参考:
SELECT COUNT(*) AS `numrows` FROM `ltb_line` WHERE `parent_line_id` =0 AND `flag` = 1
// Produces: LIMIT 20, 10 (in MySQL. Other databases have slightly different syntax)
$this->db->limit(10, 20);
public function delete_line() { $this->load->service('s_line'); $url = '/tool/delete_line'; // 获取记录 $fields = 'ltb_line_id,line_start_time,time_range'; $where = array( 'parent_line_id' => 0, 'flag' => 1 ); // 总记录数 $count = $this->db ->select($fields) ->from('ltb_line') ->where($where) ->count_all_results(null, FALSE); // 分页情况 $page_size = 10; // 每页记录数 $page_index = intval($_GET['page']); $page_count = ceil($count / $page_size); $page_index = max(1, $page_index); $page_index = min($page_index, $page_count); $offset = $page_size * ($page_index - 1); if (intval($_GET['page']) > $page_count) { echo "已完成"; die(); } // 分页记录 $list = $this->db->limit($page_size, $offset)->get()->result_array(); echo "正在处理<span style='color:red'> {$page_index} / {$page_count} 页"; // 处理当前分页数据 foreach ($list as $_parent_line) { $this->s_line->check_child_line_time($_parent_line['ltb_line_id']); } // 页面跳转 $page_index++; http_goto($url . '?page=' . $page_index, 1); }
/** * URL跳转 * * @param string $url 跳转地址 * @param int $time 跳转延时(单位:秒) * @param string $msg 提示语 */ function http_goto($url = '', $time = 0, $msg = '') { //if (empty($msg)) { // $msg = "系统将在 {$time}秒 之后自动跳转到 {$url} !"; //} if (headers_sent()) { $str = "<meta http-equiv='Refresh' content='{$time};URL={$url}'>"; if ($time != 0) { $str .= $msg; } die($str); } else { if ($time === 0) { header("HTTP/1.1 301 Moved Permanently"); header("Location: " . $url); } else { header("Content-type: text/html; charset=utf-8"); header("refresh:{$time};url={$url}"); echo($msg); } die(); } }