데이터베이스 업그레이드
문서
변경된 사항
업그레이드 가이드
app/Config/Database.php에 데이터베이스 자격 증명을 추가하십시오. 옵션은 CI3과 거의 동일하며 일부 이름만 약간 변경되었습니다.
데이터베이스를 사용한 모든 곳에서
$this->load->database();를$db = db_connect();으로 교체해야 합니다.여러 데이터베이스를 사용하는 경우 다음 코드를 사용하여 추가 데이터베이스를 로드하십시오:
$db = db_connect('group_name');이제 모든 데이터베이스 쿼리를 변경해야 합니다. 가장 중요한 변경은
$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();로
새로운 쿼리 빌더 클래스를 사용하려면
$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);로
CI4는 CI3에서 알려진 데이터베이스 캐싱 계층을 제공하지 않으므로, 결과를 캐시해야 하는 경우 캐싱 드라이버을 대신 사용하십시오.
쿼리 빌더에서
limit(0)을 사용하면 CI4는 버그로 인해 레코드가 없는 대신 모든 레코드를 반환합니다. 그러나 v4.5.0부터 설정으로 이 잘못된 동작을 변경할 수 있습니다. 자세한 내용은 limit(0) 동작를 참조하십시오.
코드 예제
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();