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

Laravel 8 模型自定义__construct后factory()->create()执行失败如何解决

问题原因

你重写Eloquent模型的构造方法时,没有接收父类要求的$attributes参数,也没有调用父类的构造方法,导致工厂生成的filename属性无法被正常传入模型,执行插入操作时自然就缺少对应字段值。

修复方案

修改你的ClientDocument模型的构造方法如下:

public function __construct(array $attributes = [])
{
    // 必须先调用父类构造方法,传入属性参数
    parent::__construct($attributes);

    // 你的自定义逻辑
    if (auth()->user()) {
        $this->locale = auth()->user()->locale;
    } else {
        $this->locale = 'en';
    }
}
补充说明
  • Eloquent模型的构造方法默认会接收$attributes数组,工厂生成的字段值都会放在这个数组里传入模型,用于后续的批量赋值和写入操作。你之前的自定义构造完全跳过了这个流程,所以所有工厂生成的属性都没有被模型识别。
  • 运行工厂、队列任务等CLI场景时,会话默认不生效,auth()->user()会返回null,你的默认值设置符合当前需求,无需额外调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 09:24:02