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

Laravel 10中如何批量复制请求属性到Eloquent实体?

Laravel 10 Eloquent批量赋值解决方案

你完全不需要创建新对象或者用反射这类复杂方式,Laravel本身就提供了简洁的批量赋值方法,核心依赖模型的$fillable配置(你已经定义了大量属性),直接用下面几种方式就能实现需求:

  • 使用fill() + save()分步操作
    Eloquent模型自带的fill()方法可以接收数组,自动将数组中的键值对赋值到模型属性上,且只会处理$fillable中定义的字段,避免批量赋值异常。示例代码:

    function save(Request $request){
        // 找到数据库中的用户实例,找不到直接抛出404异常
        $userFromDB = Usuarios::findOrFail($request->id);
        
        // 批量填充请求中的属性(仅$fillable内的字段会被赋值)
        $userFromDB->fill($request->all());
        
        // 保存变更到数据库
        $userFromDB->save();
    }
    
  • 用update()一步完成赋值+保存
    update()方法是fill()与save()的组合封装,代码更精简:

    function save(Request $request){
        $userFromDB = Usuarios::findOrFail($request->id);
        
        // 直接批量更新属性并保存到数据库
        $userFromDB->update($request->all());
    }
    
  • 安全过滤请求数据
    为了避免请求中携带的无关字段(如_token)或恶意字段影响,可以用only()或except()精准过滤数据,甚至直接复用模型的getFillable()方法只取允许填充的字段:

    // 只保留$fillable中定义的字段,安全性更高
    $userFromDB->update($request->only($userFromDB->getFillable()));
    
    // 或者排除不需要的字段
    $userFromDB->update($request->except(['_token', 'password_confirmation']));
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 15:13:22