`get()` 함수를 사용하면 SQL SELECT 문을 작성할 수 있습니다. select 쿼리를 실행하고 결과를 반환하며, 테이블에서 모든 레코드를 검색할 수 있습니다.
$builder->get()->getResult(); Array ( [0] => stdClass Object ( [idx] => 1 [name] => test1 [title] => title-test1 [email] => test1@test.com ) [1] => stdClass Object ( [idx] => 2 [name] => test2 [title] => title-test2 [email] => test2@test.com ) [2] => stdClass Object ( [idx] => 3 [name] => test3 [title] => title-test3 [email] => test3@test.com ) ) * Query : SELECT * FROM `my_table`
`limit`과 `offset`을 설정할 수 있습니다.
$builder->get(1)->getResult(), true); Array ( [0] => stdClass Object ( [idx] => 1 [name] => test1 [title] => title-test1 [email] => test1@test.com ) ) * Query : SELECT * FROM `my_table` LIMIT 1
$builder->get(1, 2)->getResult(); Array ( [0] => stdClass Object ( [idx] => 3 [name] => test3 [title] => title-test3 [email] => test3@test.com ) ) * Query : SELECT * FROM `my_table` LIMIT 2, 1
`getResult()` 함수는 $query 라는 변수에 할당되어 있으며 결과를 표시하는데 사용합니다.
결과 생성에 대한 자세한 내용은 결과(result) 함수 페이지를 참조하십시오.
이 메소드는 SQL 쿼리를 문자열로 반환합니다.
$builder->getCompiledSelect(); SELECT * FROM `my_table`
첫 번째 매개 변수를 사용하면 쿼리 빌더의 쿼리를 재설정할지 여부를 설정할 수 있습니다.
$builder->limit($limit, $offset)->getCompiledSelect(false); SELECT * FROM `my_table` LIMIT 2, 1
다음 예에서 `limit()`을 지정하지 않아도 사용 가능한 이유는 $builder->get()을 사용하여 쿼리가 실행되지 않았기 때문입니다.
쿼리를 재설정해야 한다면 `$builder->resetQuery()`를 사용하십시오.
$builder->select('title, content, date')->getCompiledSelect(); SELECT `title`, `content`, `date` FROM `my_table` LIMIT 2, 1
`where()` 함수를 사용하는 대신 첫 번째 매개 변수에 “where”절을 추가 할 수 있다는 점을 제외하고 `get()` 함수와 동일합니다.
$builder->getWhere(['idx' => 1])->getResult(); Array ( [0] => stdClass Object ( [idx] => 1 [name] => test1 [title] => title-test1 [email] => test1@test.com ) ) * Query : SELECT * FROM `my_table` WHERE `idx` = 1
쿼리의 SELECT 부분을 쓸 수 있습니다
$builder->select('idx, title')->get()->getResult(); Array ( [0] => stdClass Object ( [idx] => 1 [title] => title-test1 ) [1] => stdClass Object ( [idx] => 2 [title] => title-test2 ) [2] => stdClass Object ( [idx] => 3 [title] => title-test3 ) ) * Query : SELECT `idx`, `title` FROM `my_table`
`$builder->select()`는 두 번째 매개 변수를 옵션으로 허용하며, 이를 `false`로 설정하면 CodeIgniter는 필드 또는 테이블 이름을 보호하지 않습니다.
필드의 자동 이스케이프가 필드를 손상시킬 수 있는 복합 선택문이 필요한 경우에 유용합니다.
$builder->select('idx, title, (SELECT SUM(idx) FROM my_table) AS idx_sum', false)->get()->getResult(); Array ( [0] => stdClass Object ( [idx] => 1 [title] => title-test1 [idx_sum] => 6 ) [1] => stdClass Object ( [idx] => 2 [title] => title-test2 [idx_sum] => 6 ) [2] => stdClass Object ( [idx] => 3 [title] => title-test3 [idx_sum] => 6 ) ) * Query : SELECT idx, title, (SELECT SUM(idx) FROM my_table) AS idx_sum FROM `my_table`
쿼리의 SELECT MAX(field) 부분을 작성합니다. 옵션으로 두 번째 매개 변수에 결과 필드의 이름을 전달하여 바꿀 수 있습니다.
$builder->selectMax('idx')->get()->getRow(); stdClass Object ( [idx] => 3 ) * Query : SELECT MAX(`idx`) AS `idx` FROM `my_table`
$builder->selectMax('idx', 'max_idx')->get()->getRow(); stdClass Object ( [max_idx] => 3 ) * Query : SELECT MAX(`idx`) AS `max_idx` FROM `my_table`
쿼리의 “SELECT MIN(field)” 부분을 작성합니다. selectMax()와 마찬가지로 결과 필드의 이름을 바꾸는 두 번째 매개 변수를 옵션으로 제공합니다.
$builder->selectMin('idx')->get()->getRow(); stdClass Object ( [idx] => 1 ) * Query : SELECT MIN(`idx`) AS `idx` FROM `my_table`
$builder->selectMin('idx', 'min_idx')->get()->getRow(); stdClass Object ( [min_idx] => 1 ) * Query : SELECT MIN(`idx`) AS `min_idx` FROM `my_table`
쿼리의 “SELECT AVG(field)” 부분을 작성합니다. selectMax()와 마찬가지로 결과 필드의 이름을 바꾸는 두 번째 매개 변수를 옵션으로 제공합니다.
$builder->selectAvg('idx')->get()->getRow(); stdClass Object ( [idx] => 2.0000 ) * Query : SELECT AVG(`idx`) AS `idx` FROM `my_table`
$builder->selectAvg('idx', 'avg_idx')->get()->getRow(); stdClass Object ( [avg_idx] => 2.0000 ) * Query : SELECT AVG(`idx`) AS `avg_idx` FROM `my_table`
쿼리의 “SELECT SUM(field)” 부분을 작성합니다. selectMax()와 마찬가지로 결과 필드의 이름을 바꾸는 두 번째 매개 변수를 옵션으로 제공합니다.
$builder->selectSum('idx')->get()->getRow(); stdClass Object ( [idx] => 6 ) * Query : SELECT SUM(`idx`) AS `idx` FROM `my_table`
$builder->selectSum('idx', 'sum_idx')->get()->getRow(); stdClass Object ( [sum_idx] => 6 ) * Query : SELECT SUM(`idx`) AS `sum_idx` FROM `my_table`
쿼리의 “SELECT COUNT(field)” 부분을 작성합니다. selectMax()와 마찬가지로 결과 필드의 이름을 바꾸는 두 번째 매개 변수를 옵션으로 제공합니다.
$builder->selectCount('idx')->get()->getRow(); stdClass Object ( [idx] => 3 ) * Query : SELECT COUNT(`idx`) AS `idx` FROM `my_table`
$builder->selectCount('idx', 'cnt_idx')->get()->getRow(); stdClass Object ( [cnt_idx] => 3 ) * Query : SELECT COUNT(`idx`) AS `cnt_idx` FROM `my_table`
쿼리의 FROM 부분을 작성합니다.
$builder->from('news')->get(4)->getResult(); Array ( [0] => stdClass Object ( [idx] => 1 [name] => test1 [title] => Elvis sighted [email] => test1@test.com [id] => 1 [slug] => elvis-sighted [body] => Elvis was sighted at the Podunk internet cafe. It looked like he was writing a CodeIgniter app. ) [1] => stdClass Object ( [idx] => 2 [name] => test2 [title] => Elvis sighted [email] => test2@test.com [id] => 1 [slug] => elvis-sighted [body] => Elvis was sighted at the Podunk internet cafe. It looked like he was writing a CodeIgniter app. ) [2] => stdClass Object ( [idx] => 3 [name] => test3 [title] => Elvis sighted [email] => test3@test.com [id] => 1 [slug] => elvis-sighted [body] => Elvis was sighted at the Podunk internet cafe. It looked like he was writing a CodeIgniter app. ) [3] => stdClass Object ( [idx] => 1 [name] => test1 [title] => Say it isnt so! [email] => test1@test.com [id] => 2 [slug] => say-it-isnt-so [body] => Scientists conclude that some programmers have a sense of humor. ) ) * Query : SELECT * FROM `my_table`, `news` LIMIT 4
앞서 설명한 것처럼 쿼리의 FROM 부분은 $db->table() 함수에서 지정할 수 있습니다. 추가 호출된 `from()`은 쿼리의 FROM 부분에 더 많은 테이블을 추가합니다.
쿼리의 JOIN 부분을 작성합니다. 다음 예는 `my_table`과 `news`를 조인하여 데이터를 조회합니다.
$builder->join('news', 'my_table.idx = news.id')->get()->getResult(); Array ( [0] => stdClass Object ( [idx] => 1 [name] => test1 [title] => Elvis sighted [email] => test1@test.com [id] => 1 [slug] => elvis-sighted [body] => Elvis was sighted at the Podunk internet cafe. It looked like he was writing a CodeIgniter app. ) [1] => stdClass Object ( [idx] => 2 [name] => test2 [title] => Say it isnt so! [email] => test2@test.com [id] => 2 [slug] => say-it-isnt-so [body] => Scientists conclude that some programmers have a sense of humor. ) [2] => stdClass Object ( [idx] => 3 [name] => test3 [title] => Caffeination, Yes! [email] => test3@test.com [id] => 3 [slug] => caffeination-yes [body] => Worlds largest coffee shop open onsite nested coffee shop for staff only. ) ) * Query : SELECT * FROM `my_table` JOIN `news` ON `my_table`.`idx` = `news`.`id`