カテゴリ: Laravel 更新日: 2025/12/13

Laravelで入力値の整形・加工を行う方法(アクセサ・ミューテタ)

Laravelで入力値の整形・加工を行う方法(アクセサ・ミューテタ)
Laravelで入力値の整形・加工を行う方法(アクセサ・ミューテタ)

先生と生徒の会話形式で理解しよう

生徒

「Laravelでフォームに入力した文字を自動で加工したり整形したりすることはできますか?」

先生

「はい、できます。Laravelではアクセサとミューテタという仕組みを使うと、データを保存する前や取得するときに自動で加工できます。」

生徒

「アクセサやミューテタって何ですか?少し難しそうです。」

先生

「アクセサはデータを取り出すときに加工する機能で、ミューテタはデータを保存するときに加工する機能です。例えば、名前の最初の文字を大文字にしたり、不要なスペースを削除したりできます。」

1. ミューテタで入力値を保存時に整形する

1. ミューテタで入力値を保存時に整形する
1. ミューテタで入力値を保存時に整形する

ミューテタはモデル内でsetXXXAttributeというメソッドを定義します。例えば、名前を保存する際に自動で先頭大文字にする例です。


class User extends Model
{
    public function setNameAttribute($value)
    {
        // 先頭を大文字に変換して保存
        $this->attributes['name'] = ucfirst($value);
    }
}

この例では、フォームで「taro」と入力しても、データベースには「Taro」と保存されます。

2. アクセサで取得時に加工する

2. アクセサで取得時に加工する
2. アクセサで取得時に加工する

アクセサはデータを取り出すときに加工できます。getXXXAttributeメソッドを使います。


class User extends Model
{
    public function getNameAttribute($value)
    {
        // 常に大文字で表示
        return strtoupper($value);
    }
}

これにより、データベースには「Taro」と保存されていても、取り出すと「TARO」と表示されます。

3. 実際のフォームと組み合わせる例

3. 実際のフォームと組み合わせる例
3. 実際のフォームと組み合わせる例

Bladeテンプレートでフォームを作り、入力した名前をミューテタで整形して保存し、アクセサで表示するとこうなります。


<form method="POST" action="{{ route('user.store') }}">
    @csrf
    <input type="text" name="name" class="form-control" placeholder="名前を入力">
    <button type="submit" class="btn btn-primary mt-2">送信</button>
</form>

public function store(Request $request)
{
    $user = new User();
    $user->name = $request->name; // ミューテタで自動整形される
    $user->save();

    return view('user.show', ['user' => $user]); // アクセサで表示加工
}

<p>入力された名前: {{ $user->name }}</p>

例えば「hanako」と入力すると、データベースには「Hanako」と保存され、画面には「HANAKO」と表示されます。

4. アクセサ・ミューテタのメリット

4. アクセサ・ミューテタのメリット
4. アクセサ・ミューテタのメリット
  • フォーム入力値を自動で整形できるため、毎回同じ処理を書く必要がない
  • データベースに保存される値と表示される値を分けて管理できる
  • バリデーション後に安全に加工して保存できる
  • 名前の整形やメールアドレスの小文字化など、日常的なフォーム処理に便利
  • モデル単位で定義するのでコードがすっきりし、保守性も高い
カテゴリの一覧へ
新着記事
New1
Laravel
Laravelの認証状態をチェックする方法を完全解説!authとAuth::check()を初心者向けにやさしく説明
New2
CodeIgniter
CodeIgniterのコントローラクラスの作り方を完全ガイド!初心者でもわかる基礎から実践まで
New3
Symfony
Symfonyのフォームラベルを多言語対応!初心者でもわかる翻訳設定ガイド
New4
Laravel
Laravelでユーザー登録機能を作る方法!初心者向けにバリデーションとリダイレクトをやさしく解説
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelのデータベース設定方法を完全ガイド!初心者でもわかる.envファイルの使い方
No.2
Java&Spring記事人気No2
Laravel
Laravelのビューとは?Bladeテンプレートの基本を解説
No.3
Java&Spring記事人気No3
Laravel
Laravelでセッションを扱う方法!保存方法と利用例を解説
No.4
Java&Spring記事人気No4
Laravel
Laravelのルート一覧を確認する方法!初心者でもわかるphp artisan route:listの使い方
No.5
Java&Spring記事人気No5
Laravel
Laravelでルーティングを設定する方法!web.phpと基本ルートの書き方を初心者向けに徹底解説
No.6
Java&Spring記事人気No6
Laravel
Laravelでログを出力する方法(Monolog・storage/logs)
No.7
Java&Spring記事人気No7
Laravel
LaravelでルートをBladeテンプレートに記述する方法(route関数)
No.8
Java&Spring記事人気No8
Laravel
Laravelのルートキャッシュ機能を活用してパフォーマンス改善!初心者でもわかる完全ガイド