- 1. 概要
- 2. UPSERT
- 3. 参考サイト
1. 概要
「Laravel」でデータベースに対して、「UPSERT」をかけてみます。
2. UPSERT
下記のようにテーブルを作成しているとして。
CREATE TABLE users
(
email VARCHAR(255) NOT NULL
, name VARCHAR(255) NOT NULL
, age TINYINT UNSIGNED NOT NULL
, PRIMARY KEY (email, name)
);
これに「UPSERT」をかけるには、下記のような構文を用います。
DB::table('users')->upsert(
[
[
'email' => 'test@example.com',
'name' => 'Taro',
'age' => 30,
],
],
['email'], // UNIQUE キー
['name', 'age'] // 更新対象カラム
);
「MySQL」上で実際に実行する「SQL」は、下記のものになります。
INSERT INTO users (email, name, age)
VALUES ('test@example.com', 'Taro', 30)
ON DUPLICATE KEY UPDATE
name = VALUES(name),
age = VALUES(age);
3. 参考サイト
本ページは、「ChatGPT」軍曹を参考にさせていただきました。
|