`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`