$builder->replace()

이 메소드는 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',
]);

1

* Query : REPLACE INTO `my_table_tmp_0` (`idx`, `title`, `name`, `email`) VALUES (1, 'My title', 'My Name', 'My email')

$builder->set([
    'idx' => 1,
    'title' => 'My title2',
    'name'  => 'My Name2',
    'email'  => 'My email2',
])->replace();

1

* Query : REPLACE INTO `my_table_tmp_0` (`idx`, `title`, `name`, `email`) VALUES (1, 'My title2', 'My Name2', 'My email2')

$builder->update()

업데이트 문자열을 생성하고 제공한 데이터를 기반으로 쿼리를 실행합니다.

$builder->where('idx',1)->update([
    'title' => 'My title',
    'name'  => 'My Name',
    'email'  => 'My email',
]);

1

* Query : UPDATE `my_table_tmp_0` SET `title` = 'My title', `name` = 'My Name', `email` = 'My email' WHERE `idx` = 1

WHERE절을 `update()` 함수에 직접 전달할 수 있습니다.

// 문자열로 전달
$builder->update([
    'title' => 'My title',
    'name'  => 'My Name',
    'email'  => 'My email',
], 'idx = 1');

1

* Query : UPDATE `my_table_tmp_0` SET `title` = 'My title', `name` = 'My Name', `email` = 'My email' WHERE `idx` = 1

// 배열로 전달
$builder->update([
    'title' => 'My title',
    'name'  => 'My Name',
    'email'  => 'My email',
], ['idx' => 1]);

1

* Query : UPDATE `my_table_tmp_0` SET `title` = 'My title', `name` = 'My Name', `email` = 'My email' WHERE `idx` = 1

$builder->set()

이 기능을 사용하면 Insert처럼 데이터 배열을 직접 Update로 전달할 수 있습니다.

$builder->set([
    'title' => 'My title',
    'name'  => 'My Name',
    'email'  => 'My email',
])->where('idx', 1)->update();

1

* Query : UPDATE `my_table_tmp_0` SET `title` = 'My title', `name` = 'My Name', `email` = 'My email' WHERE `idx` = 1

$builder->updateBatch()

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');

1

* Query : UPDATE `my_table_tmp_0` SET `title` = CASE 
WHEN `idx` = 1 THEN 'My title'
WHEN `idx` = 2 THEN 'My title'
ELSE `title` END, `name` = CASE 
WHEN `idx` = 1 THEN 'My Name'
WHEN `idx` = 2 THEN 'My Name'
ELSE `name` END, `email` = CASE 
WHEN `idx` = 1 THEN 'My email'
WHEN `idx` = 2 THEN 'My email'
ELSE `email` END
WHERE `idx` IN(1,2)

$builder->getCompiledUpdate()

Update 쿼리를 컴파일하지만 쿼리를 실행하지는 않습니다. 이 메소드는 SQL 쿼리를 문자열로 반환합니다.

$builder->set([
    'title' => 'My title',
    'name'  => 'My Name',
    'email'  => 'My email',
])->where('idx', 1)->getCompiledUpdate();

UPDATE `my_table_tmp_0` SET `title` = 'My title', `name` = 'My Name', `email` = 'My email'
WHERE `idx` = 1