You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel如何在数据入库前过滤输入?统一姓名格式

Laravel 中存入数据库前格式化姓名的方法

在Laravel里,要把姓名统一处理成首字母大写、其余小写的格式,有几种常用的实现方式,根据你的场景选择即可:

方法一:模型修改器(推荐,全局生效)

在对应的用户模型(比如App\Models\User)中定义字段修改器,只要通过模型操作数据,就会自动格式化姓名:

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    // 定义name字段的修改器
    public function setNameAttribute($value)
    {
        // ucwords() 支持多词姓名,比如输入"JOHN DOE"会转为"John Doe"
        // 单字姓名用 ucfirst(strtolower($value)) 也可,效果一致
        $this->attributes['name'] = ucwords(strtolower($value));
    }
}

之后不管是用$user->name = 'alice smith';、User::create()还是User::update(),name字段都会自动处理后存入数据库。

方法二:表单请求预处理

如果使用了自定义表单请求类(比如注册用的RegisterRequest),可以在验证前先格式化输入:

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class RegisterRequest extends FormRequest
{
    // 验证前预处理输入数据
    protected function prepareForValidation()
    {
        $this->merge([
            'name' => ucwords(strtolower($this->input('name'))),
        ]);
    }

    // 验证规则
    public function rules()
    {
        return [
            'name' => 'required|string|max:255',
            'email' => 'required|string|email|max:255|unique:users',
            'password' => 'required|string|min:8|confirmed',
        ];
    }
}

这种方式会在验证阶段就把姓名处理好,后续存入数据库的就是格式化后的值。

方法三:控制器中直接处理

如果场景简单,也可以在控制器的存储/更新方法里手动处理输入:

namespace App\Http\Controllers;

use App\Models\User;
use Illuminate\Http\Request;

class UserController extends Controller
{
    public function store(Request $request)
    {
        $validatedData = $request->validate([
            'name' => 'required|string|max:255',
            'email' => 'required|string|email|max:255|unique:users',
            'password' => 'required|string|min:8|confirmed',
        ]);

        // 格式化姓名字段
        $validatedData['name'] = ucwords(strtolower($validatedData['name']));

        User::create($validatedData);

        return redirect()->route('dashboard');
    }
}

内容的提问来源于stack exchange,提问作者CH405

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 13:50:45