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

Laravel Livewire使用Eloquent时表单输入值存入数据库为空问题

问题排查方案
  • 检查Absence模型的批量赋值权限
    Eloquent的create方法受批量赋值保护机制限制,必须确保reason字段被包含在模型的$fillable数组中:

    class Absence extends Model
    {
        protected $fillable = ['reason', /* 其他允许批量赋值的字段 */];
        // 或者设置 $guarded = []; 允许所有字段批量赋值(生产环境不推荐)
    }
    

    如果reason不在$fillable列表内,create方法会自动忽略该字段的赋值,导致存入null;而直接写入字符串的方式不受批量赋值规则约束,因此能正常存入数据。

  • 确认Livewire属性绑定与提交逻辑
    虽然单独执行dd($this->reason_add)能获取到值,但可以再核对以下细节:

    • 表单输入框的wire:model是否准确绑定到reason_add,例如:<input type="text" wire:model="reason_add">
    • 提交动作(如wire:click="submitForm")是否在属性更新后触发,排查是否存在提交前意外重置reason_add值的代码
  • 排查模型事件/观察者的干扰
    检查Absence模型是否注册了creating、saving等事件回调或观察者,确认这些逻辑中是否存在将reason字段重置为null的代码:

    protected static function boot()
    {
        parent::boot();
        static::creating(function ($absence) {
            // 检查是否有类似 $absence->reason = null; 的逻辑
        });
    }
    
  • 验证数据库字段配置
    确认数据库中reason字段的类型(如是否为varchar)、是否允许null值。虽然手动写入'test'正常,但字段类型不匹配也可能导致赋值异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 05:39:54