이 메소드는 PRIMARY 키와 UNIQUE 키를 기준으로 DELETE + INSERT에 대한 SQL 표준인 REPLACE문을 실행합니다.
이를 이용하여 `select()`, `update()`, `delete()`, `insert()`의 조합으로 구성된 복잡한 로직을 간단하게 구현할 수 있습니다.
아래 예에서 idx 필드가 기본 키라고 가정하면 idx 값이 포함된 행은 새 행 데이터로 대체되어 삭제됩니다.
`set()` 메소드 사용도 허용되며 `insert()`와 마찬가지로 모든 필드가 자동으로 이스케이프됩니다.
$builder->replace([ 'idx' => 1, 'title' => 'My title', 'name' => 'My Name', 'email' => 'My email', ]); = print_r($builder->replace([ 'idx' => 1, 'title' => 'My title', 'name' => 'My Name', 'email' => 'My email', ]), true) ?> = get_last_query() ?> $builder->set([ 'idx' => 1, 'title' => 'My title2', 'name' => 'My Name2', 'email' => 'My email2', ])->replace(); = print_r($builder->set([ 'idx' => 1, 'title' => 'My title2', 'name' => 'My Name2', 'email' => 'My email2', ])->replace(), true) ?> = get_last_query() ?>
업데이트 문자열을 생성하고 제공한 데이터를 기반으로 쿼리를 실행합니다.
$builder->where('idx',1)->update([ 'title' => 'My title', 'name' => 'My Name', 'email' => 'My email', ]); = print_r($builder->where('idx',1)->update([ 'title' => 'My title', 'name' => 'My Name', 'email' => 'My email', ]), true) ?> = get_last_query() ?>
WHERE절을 `update()` 함수에 직접 전달할 수 있습니다.
// 문자열로 전달 $builder->update([ 'title' => 'My title', 'name' => 'My Name', 'email' => 'My email', ], 'idx = 1'); = print_r($builder->update([ 'title' => 'My title', 'name' => 'My Name', 'email' => 'My email', ], 'idx = 1'), true) ?> = get_last_query() ?> // 배열로 전달 $builder->update([ 'title' => 'My title', 'name' => 'My Name', 'email' => 'My email', ], ['idx' => 1]); = print_r($builder->update([ 'title' => 'My title', 'name' => 'My Name', 'email' => 'My email', ], ['idx' => 1]), true) ?> = get_last_query() ?>
이 기능을 사용하면 Insert처럼 데이터 배열을 직접 Update로 전달할 수 있습니다.
$builder->set([ 'title' => 'My title', 'name' => 'My Name', 'email' => 'My email', ])->where('idx', 1)->update(); = print_r($builder->set([ 'title' => 'My title', 'name' => 'My Name', 'email' => 'My email', ])->where('idx', 1)->update(), true) ?> = get_last_query() ?>
update 문자열을 생성하고 제공한 데이터를 기반으로 쿼리를 실행합니다.
첫 번째 매개 변수는 값의 연관 배열이고, 두 번째 매개 변수는 where절에 사용할 키입니다.
$builder->updateBatch([ [ 'idx' => 1, 'title' => 'My title', 'name' => 'My Name', 'email' => 'My email', ], [ 'idx' => 2, 'title' => 'My title', 'name' => 'My Name', 'email' => 'My email', ], ], 'idx'); = print_r($builder->updateBatch([ [ 'idx' => 1, 'title' => 'My title', 'name' => 'My Name', 'email' => 'My email', ], [ 'idx' => 2, 'title' => 'My title', 'name' => 'My Name', 'email' => 'My email', ], ], 'idx'), true) ?> = get_last_query(false) ?>
Update 쿼리를 컴파일하지만 쿼리를 실행하지는 않습니다. 이 메소드는 SQL 쿼리를 문자열로 반환합니다.
$builder->set([ 'title' => 'My title', 'name' => 'My Name', 'email' => 'My email', ])->where('idx', 1)->getCompiledUpdate(); = print_r($builder->set([ 'title' => 'My title', 'name' => 'My Name', 'email' => 'My email', ])->where('idx', 1)->getCompiledUpdate(), true) ?>