Laravel7 updateOrInsert レコードが存在しない時はinsertして、存在する時はupdateする方法

“delete -> insert、またはinsert -> 一意制約時はupdate”をしなければいけないところを、updateOrInsert()が上手にやってくれる。

user_idとjob_idが一意制約のuser_jobsテーブルがある場合

UserJob::updateOrInsert(
    [
        'user_id' => 1,
        'job_id' => 1
    ],
    [
        'email' => 'xxx@gmail.com'
    ]
);

第1パラメータ:where句みたいにレコード抽出条件を指定
第2パラメータ:対象カラムとセットしたい値を指定

第1パラメータの条件に該当するレコードが存在しない場合
第1パラメータと第2パラメータの値をinsertする。

第1パラメータの条件に該当するレコードが存在する場合
第2パラメータの値でupdateする。

insert()やupdate()はtrue or falseのbool型が返ってくるのに対し、updateOrInsert()は、EloquentのBuilder型が返ってくるので注意!!

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です