LoginSignup
1
0

More than 1 year has passed since last update.

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

Last updated at Posted at 2022-02-08

概要

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

変更前のロジック

  • 更新時は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
    );
}

最後に

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

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0