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

表单提交时lab_id字段报整数值不正确错误该如何修复?

问题修复方案

报错信息:Incorrect integer value: '{"id":1,"name":"Main Lab}' for column 'lab_id' at row 1

问题根因

你的lab_id是整数字段,但提交时$this->lab实际拿到的是不完整的JSON对象字符串,不是你预期的整数1。你在mount阶段打印$lab得到1是正常的,但提交过程中该属性值被篡改,大概率是前端模板绑定时误将整个lab对象作为值传递,而非只取lab的id字段,常见于Livewire这类前后端交互的组件场景。

修复步骤

  • 先确认提交阶段的实际值,避免mount阶段的调试结果误导:
public function submit()
{
    // 新增这行调试,查看提交时的$this->lab真实值
    dd($this->lab);
    $this->validate();
    $this->sample->received_at = now();
    $this->sample->lab_id = $this->lab;
    $this->sample->save();
    $this->message = "Sample {$this->samples->sample_id} Registered Successfully";
}
  • 确认值类型后二选一修复:
    1. 后端兼容处理,赋值时自动提取id/强转整数:
      把原有赋值行替换为:
    $this->sample->lab_id = is_object($this->lab) ? $this->lab->id : (int)$this->lab;
    
    1. 修复前端绑定逻辑,确保传递的是lab的id值:
      检查Blade模板里的表单绑定代码,比如将<option value="{{ $lab }}">这类写法修改为<option value="{{ $lab->id }}">,确保提交给后端的lab属性是整数类型。
  • 补充验证规则,从根源拦截类型错误:
    在你的组件验证规则中新增lab字段的整数校验:
    protected $rules = [
        // 其余原有规则
        'lab' => 'required|integer',
    ];
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 14:24:04