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

Laravel执行insert操作时插入迁移默认值而非请求提交数据问题

问题根因

这是Laravel批量赋值机制触发的字段过滤问题,你传递的is_free字段被模型自动过滤,最终未参与写入操作,数据库直接使用迁移定义的默认值。

解决方案

步骤1:修改Chapter模型批量赋值白名单

打开app/Models/Chapter.php文件,找到$fillable属性,将is_free加入允许批量赋值的字段列表:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Chapter extends Model
{
    // 确保$fillable数组包含所有你需要通过create批量写入的字段
    protected $fillable = [
        'title',
        'slug',
        'description',
        'content',
        'is_free', // 新增此行
    ];
}

验证方案(可选)

如果修改后仍有问题,可通过单字段赋值写入方式排查是否为批量赋值导致:

$chapter = new Chapter();
$chapter->fill($request->only(['title','slug','description','content']));
$chapter->is_free = $request->is_free;
$chapter->save();

如果上述代码可正常写入is_free字段的值,可进一步确认是批量赋值白名单配置问题。

其他少见排查方向

  • 检查Chapter模型是否定义了setIsFreeAttribute修改器,是否存在强制修改字段值的逻辑
  • 检查请求传入的is_free值是否为字符串类型的0/1,是否存在字段类型不兼容被强制转为默认值的情况,可在写入前通过(int)$request->is_free做类型转换

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 15:27:03