Codeigniter 常用查询

CodeIgniter Base Model

官方文档:
https://github.com/jamierumbelow/codeigniter-base-model

查询


// 通过id查询单行 $row = $this->article_model->get(2); // 通过任意字段查询单行,如果结果多于1条,则取第一条 $row = $this->article_model->get_by('title', 'Fuzzy Wuzzy'); // 多条件查询 $row = $this->article_model->get_by(array('id' => 2, 'status' => 1)); // 通过id查询多行 $result = $this->article_model->get_many(array(1,3,4)); // 通过任意字段查询多行 $result = $this->article_model->get_many_by('title', 'Dumb and boring post'); // 获取全部数据 $result = $this->article_model->get_all(); // 根据条件计数 $count = $this->article_model->count_by('title', 'Dumb and boring post'); // 全部计数 $count = $this->article_model->count_all(); // 链式 $this->post_model->order_by('id', 'desc')->get_many_by(['is_open' => 1, 'status' => 1]);

增删改


$insert_id = $this->article_model->insert(array( 'status' => 'open', 'title' => "I'm too sexy for my shirt" )); // 根据ID更新 $this->post->update(1, array( 'status' => 'closed' )); // 根据多条件更新 $update_id = $this->article_model->update_by(array('title'=>'My thoughts'), array('body'=>'Having deeper thoughts')); $this->post->delete(1);

Codeigniter原生

//通过SQL查询
$query = $this->db->query("SELECT * FROM table");

if ($query->num_rows() > 0) {
    foreach ($query->result() as $row)
    {
        echo $row->title;
        echo $row->name;
        echo $row->email;
    }
}

关联

$this->db->select('*');
$this->db->from('blogs');
$this->db->join('comments', 'comments.id = blogs.id');
$query = $this->db->get();

//result() 返回对象数组 $data = $query->result(); //result_array() 返回数据 $data = $query->result_array(); //row() 只返回一行对象数组 $data = $query->row(); //num_rows() 返回查询结果行数 $data = $query->num_rows(); //num_fields() 返回查询请求的字段个数 $data = $query->num_fields(); //row_array() 只返回一行数组 $data = $query->row_array(); //free_result() 释放当前查询所占用的内存并删除关联资源标识 $data = $query->free_result(); /* ================================== 插入操作 ================================== */ //上次插入操作生成的ID echo $this->db->insert_id(); //写入和更新操作被影响的行数 echo $this->db->affected_rows(); //返回指定表的总行数 echo $this->db->count_all('table_name'); //输出当前的数据库版本号 echo $this->db->version(); //输出当前的数据库平台 echo $this->db->platform(); //返回最后运行的查询语句 echo $this->db->last_query(); //插入数据,被插入的数据会被自动转换和过滤,例如: //$data = array('name' => $name, 'email' => $email, 'url' => $url); $this->db->insert_string('table_name', $data); /* ================================== 更新操作 ================================== */ //更新数据,被更新的数据会被自动转换和过滤,例如: //$data = array('name' => $name, 'email' => $email, 'url' => $url); //$where = "author_id = 1 AND status = 'active'"; $this->db->update_string('table_name', $data, $where); /* ================================== 选择数据 ================================== */ //获取表的全部数据 $this->db->get('table_name'); //第二个参数为输出条数,第三个参数为开始位置 $this->db->get('table_name', 10, 20); //获取数据,第一个参数为表名,第二个为获取条件,第三个为条数 $this->db->get_where('table_name', array('id'=>$id), $offset); //select方式获取数据 $this->db->select('title, content, date'); $data = $this->db->get('table_name'); //获取字段的最大值,第二个参数为别名,相当于max(age) AS nianling $this->db->select_max('age'); $this->db->select_max('age', 'nianling'); //获取字段的最小值 $this->db->select_min('age'); $this->db->select_min('age', 'nianling'); //获取字段的和 $this->db->select_sum('age'); $this->db->select_sum('age', 'nianling'); //自定义from表 $this->db->select('title, content, date'); $this->db->from('table_name'); //查询条件 WHERE name = 'Joe' AND title = 'boss' AND status = 'active' $this->db->where('name', $name); $this->db->where('title', $title); $this->db->where('status', $status); //范围查询 $this->db->where_in('item1', $array); $this->db->where_not_in('item1', $array); //匹配,第三个参数为匹配模式 title LIKE '%match%' $this->db->like('title', 'match', 'before/after/both'); $this->db->not_like(); //分组 GROUP BY title, date $this->db->group_by('title', 'date'); //限制条数 $this->db->limit(0, 20);

排序

$this->db->order_by('title', 'DESC');

$this->db->order_by('title DESC, name ASC');

$this->db->order_by('title', 'DESC');
$this->db->order_by('name', 'ASC');

$this->db->order_by('title', 'RANDOM');

其他用法

// 查询条件加括号
$this->db->select('id')
             ->where('age',18) 
             ->group_start() //左括号
               ->like('name', 'B')
               ->or_like('phone', '188')
             ->group_end() //右括号
             ->get('table');

1,410 total views, 2 views today

Revisions

No comments yet.

发表评论