Laravelでfillを使って複数カラムの登録・更新する方法

※当サイトは、アフィリエイト広告を利用しています
Laravel
スポンサーリンク

この記事では、Laravelのfillメソッドを使って複数カラムの登録・更新する方法について解説します。

スポンサーリンク

fillメソッドとは

fillメソッドは、Laravelのモデルクラスで提供される便利なメソッドです。

このメソッドを使うことで、単一のカラムだけでなく、複数のカラムを一度に登録や更新することができます。

fillメソッドを使わない場合、以下のように値を保存させるために1つずつプロパティを指定する必要があります。

$user = User::find($id);
$user->email = ”test@test.com”;
$user->last_name = "山田";
$user->first_name = "太郎";
$user->tel = "00000000000";
$user->save();

次に紹介するfillメソッドではこのコードよりも簡単に書くことができるようになります。

スポンサーリンク

fillメソッドの使い方

ここからはfillメソッドの使い方を紹介します。

モデルのインスタンスに対してfillメソッドを呼び出し、連想配列の形式で値を指定することで、複数のカラムに値をセットします。

先ほどのコードをfillメソッドを使うと以下のようにすることができます。

$user = User::find($id);
$user->fill(
 [
   'email' => 'test@test.com',
   'last_name' => '山田'
   'first_name' => "太郎",
   'tel' => '00000000000'
 ]
)->save();

fillメソッドを呼び出し、連想配列の形式で値を指定しています。

まとめてコードを書くことができるので可読性が上がります。

フォームの値$requestを簡単に保存できる

fillメソッドはフォームの値を保存する際にメリットを最大限活用できます。

public function update(Request $request)
{
    $user = User::find($request->id);
    $user->fill($request->all())->save();
}

$request->all()の中にはフォームで入力した内容が連想配列で入っています。

なので「fill($request->all())」とすることで保存したいものを全てまとめることができます。

一点注意点は、フォーム内のname属性を保存するカラム名と同じにすることです。

$request->all()の中身の連想配列は、キーにフォームのname属性、バリューにそのname属性に入っている入力内容になっています。

fill($request->all())」使う場合はname属性を保存するカラム名に設定するようにしましょう。

エンジニアにおすすめ書籍

エンジニアになりたて、これから勉強を深めていきたいという方におすすめの書籍はこちら!

fillメソッドの注意点

fillメソッドを使う際には、モデルで設定されているfillableプロパティにセットしたいカラム名を指定する必要があります。

fillableプロパティに指定されていないカラムは、fillメソッドによる更新ができません。

class User extends Model
{
  protected $fillable = ['email', 'last_name', 'first_name', 'tel']; 
}

fillメソッドを使うモデルクラスに$fillableを定義し、fillメソッドで更新するカラム名を指定します。

これを定義しておかないとfillメソッドを使っても値が更新されないので必ず定義するようにしましょう。

自分はこの定義を忘れて「全然値が更新されない!」と時間を無駄にしてしまったことがよくあるので覚えておきましょう。

fillableについてさらに詳しい説明は以下で行なっております。

fillableの必要性と注意点をまとめています。

fillメソッドで効率的にデータ保存しよう

いかがだったでしょうか。

Laravelのfillメソッドを使えば、複数のカラムを一度に登録や更新することが簡単にできます。

この機能を使うことで、効率的なデータベース操作が可能になります。

ぜひ、Laravelのfillメソッドを活用して、スマートなコーディングを実現してください。

Laravel
シェアする
エンせいをフォローする
スポンサーリンク
タイトルとURLをコピーしました