제공한 데이터를 기반으로 Insert 문자열을 생성하고 쿼리를 실행합니다.
$builder->insert([ 'title' => 'My title', 'name' => 'My Name', 'email' => 'My email', ]); 1 * Query : INSERT INTO `my_table_tmp_9` (`title`, `name`, `email`) VALUES ('My title', 'My Name', 'My email')
동일한 기본(primary) 키를 가진 항목이 있으면 데이터가 인서트(insert)되지 않도록 제공한 데이터를 기반으로 인서트 무시 문자열(insert ignore string)을 추가하여 쿼리를 실행합니다.
$builder->ignore()->insert([ 'idx' => 1, 'title' => 'My title', 'name' => 'My Name', 'email' => 'My email', ]); 1 * Query : INSERT IGNORE INTO `my_table_tmp_9` (`idx`, `title`, `name`, `email`) VALUES (1, 'My title', 'My Name', 'My email')
데이터 배열을 직접 Insert로 전달하는 대신 사용합니다.
$builder->set('name', 'My Name')->insert(); 1 * Query : INSERT INTO `my_table_tmp_9` (`name`) VALUES ('My Name')
여러번 사용하여도 올바르게 조립됩니다.
$builder->set('name', 'My Name') ->set('title', 'My title') ->set('email', 'My email') ->insert(); 1 * Query : INSERT INTO `my_table_tmp_9` (`name`, `title`, `email`) VALUES ('My Name', 'My title', 'My email')
set()의 세 번째 매개 변수 `$escape`의 값을 `false`로 설정하면 데이터가 이스케이프되지 않습니다.
// false로 설정한 경우 $builder->set('name', 'ABS(100)', false)->insert(); 1 * Query : INSERT INTO `my_table_tmp_9` (name) VALUES (ABS(100)) // false로 설정하지 않은 경우 $builder->set('name', 'ABS(100)')->insert(); 1 * Query : INSERT INTO `my_table_tmp_9` (`name`) VALUES ('ABS(100)')
$builder->insert()와 같이 Insert 쿼리를 컴파일하지만 쿼리를 실행하지는 않습니다. 이 메소드는 SQL 쿼리를 문자열로 반환합니다.
echo $builder->->set([ 'idx' => 2, 'title' => 'My title', 'name' => 'My Name', 'email' => 'My email', ])->getCompiledInsert(); INSERT INTO `my_table_tmp_9` (`idx`, `title`, `name`, `email`) VALUES (2, 'My title', 'My Name', 'My email')
제공한 데이터를 기반으로 Insert 문자열을 생성하고 쿼리를 실행합니다.
$builder->insertBatch([ [ 'title' => 'My title', 'name' => 'My Name', 'email' => 'My email', ], [ 'title' => 'My title', 'name' => 'My Name', 'email' => 'My email', ], ]); 21 * Query : INSERT INTO `my_table_tmp_9` (`email`, `name`, `title`) VALUES ('My email','My Name','My title'), ('My email','My Name','My title')