🧑‍💻

【Laravel】updateOrCreateメソッドを利用して登録・更新ロジックを共通化

2022/02/09に公開

概要

updateOrCreateメソッドを利用することで登録・更新処理をシンプルにしてみた

https://laravel.com/docs/8.x/eloquent#upserts

変更前のロジック

  • 更新時はsave()・登録時はcreate()メソッドを実行している
<?php
/**
 * 登録・更新
 * @param array $request
 * @param int|null $id
 * @return bool|Builder|Model
 */
public function store(array $request, ?int $id = null)
{
    $isEdit = !is_null($id);

    if ($isEdit) {
        return (User::query()->findOrFail($id))->fill($request)->save();
    }

    return GoodsCategories::query()->create($request);
}

変更後のロジック

updateOrCreate(array 検索対象のカラム=>レコード, array 登録・更新データ) を利用することで、更新時・登録時の処理を共通化することができます

/**
 * 登録・更新
 * @param array $request
 * @param $id
 * @return array
 */
public function store(array $request, $id = null)
{
    // 登録ずみIDがあれば更新・なければ登録
    return User::query()->updateOrCreate(
        ['id' => $id],
        $request
    );
}

最後に

読んでいただきありがとうございます。
今回の記事はいかがでしたか?
・こういう記事が読みたい
・こういうところが良かった
・こうした方が良いのではないか
などなど、率直なご意見を募集しております。

GitHubで編集を提案

Discussion