【Laravel】 firstOrNewが便利

えびさん

LaravelfirstOrNewメソッドを活用するとソースがすっきりしたのでメモ

これまでの実装例

例えばメールアドレスに紐づくユーザーを検索して、
いない場合は新規作成する場合のソースがこちら

<?php
// (省略)

public function store(Request $request)
{
    $data = $request->all();
    $targetUser = User::where('email', $data['email'])->first();
    if (empty($targetUser)) {
      $targetUser = new User();
    }
    $targetUser->fill($data)->save();
}

firstOrNewを使うと

<?php
// (省略)

public function store(Request $request)
{
    $data = $request->all();
    $targetUser = User::firstOrNew(['email', $data['email']]);
    $target->fill($data)->save();
}


簡略化されて良き

firstOrCreate即時にDBレコードが作られてしまうので、
fillやらあれこれしたい場合はfirstOrNewを使う