升级数据库

文档

变更内容

  • CI3 中的功能与 CI4 中的功能基本相同。

  • 数据库缓存功能已从 CI3 中移除。

  • 方法名称已更改为驼峰命名法,现在需要初始化查询生成器,才能在其中运行查询。

升级指南

  1. 将数据库凭据添加到 app/Config/Database.php。选项与 CI3 中的选项几乎相同,只是某些名称略有更改。

  2. 在使用数据库的任何地方,都必须将 $this->load->database(); 替换为 $db = db_connect();

  3. 如果使用多个数据库,请使用以下代码加载其他数据库 $db = db_connect('group_name');

  4. 现在,必须更改所有数据库查询。这里最重要的更改是将 $this->db 替换为 $db,并调整方法名称和 $db。以下是一些示例

    • $this->db->query('YOUR QUERY HERE'); 替换为 $db->query('YOUR QUERY HERE');

    • $this->db->simple_query('YOUR QUERY') 替换为 $db->simpleQuery('YOUR QUERY')

    • $this->db->escape("something") 替换为 $db->escape("something");

    • $this->db->affected_rows(); 替换为 $db->affectedRows();

    • $query->result(); 替换为 $query->getResult();

    • $query->result_array(); 替换为 $query->getResultArray();

    • echo $this->db->count_all('my_table'); 转换为 echo $db->table('my_table')->countAll();

  5. 要使用新的查询生成器类,您必须初始化生成器 $builder = $db->table('mytable');,然后您可以在 $builder 上运行查询。以下是一些示例

    • $this->db->get() 转换为 $builder->get();

    • $this->db->get_where('mytable', array('id' => $id), $limit, $offset); 转换为 $builder->getWhere(['id' => $id], $limit, $offset);

    • $this->db->select('title, content, date'); 转换为 $builder->select('title, content, date');

    • $this->db->select_max('age'); 转换为 $builder->selectMax('age');

    • $this->db->join('comments', 'comments.id = blogs.id'); 转换为 $builder->join('comments', 'comments.id = blogs.id');

    • $this->db->having('user_id',  45); 转换为 $builder->having('user_id',  45);

  6. CI4 不提供 CI3 中已知的 数据库缓存 层,因此如果您需要缓存结果,请改用 缓存驱动程序

代码示例

CodeIgniter 版本 3.x

<?php

$query = $this->db->select('title')
             ->where('id', $id)
             ->limit(10, 20)
             ->get('mytable');

CodeIgniter 版本 4.x

<?php

$builder = $db->table('mytable');

$query = $builder->select('title')
    ->where('id', $id)
    ->limit(10, 20)
    ->get();