“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型が返ってくるので注意!!