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

如何在Laravel中不将user_id加入$fillable插入认证用户ID并解决报错

问题排查与修复方案

1. 优先检查Auth配置文件

打开项目config/auth.php文件,找到providers配置项,确认users驱动的model路径是否正确:

'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\Models\User::class,
    ],
],

这是你遇到"Undefined method stories"报错的最常见原因:Laravel 8默认用户模型路径为App\Models\User::class,如果你的项目是从低版本升级、或者手动修改过配置,此处可能还是旧的App\User::class,导致auth返回的用户实例不是你定义了stories关联的模型类,自然找不到对应方法。

2. 修复Story模型的关联定义错误

你当前Story模型里的user关联写法有误,类名首字母要大写:

// 原错误写法
public function user(){
    return $this->belongsTo(user::class);
}

// 修改为
public function user(){
    return $this->belongsTo(User::class);
}

该问题暂时不会触发当前报错,但后续调用反向关联时会出现异常,建议一并修复。

3. 清理多余代码

你在store方法中用关联创建Story时,不需要手动传入user_id,关联方法会自动填充该字段,而且你的$fillable也没有允许user_id批量赋值,直接删掉对应行即可:

auth()->user()->stories()->create([
    'title' => $request->title,
    'body' => $request->body,
    'type' => $request->type,
    'status' => $request->status,
]);

4. 可选校验

如果修改完配置还是报错,可以在store方法最前面加一行临时调试代码,确认返回的用户类是否正确:

dd(get_class(auth()->user()));

正常输出应该是App\Models\User,如果输出其他内容,就说明auth的用户实例来源不对,再对应排查即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 23:57:00