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

Laravel数据库通知报错:Column 'notifiable_id' cannot be null

问题解决:Laravel数据库通知notifiable_id为空报错

问题原因

报错提示notifiable_id字段不能为空,核心原因是Laravel通知系统需要从目标User模型实例中读取主键值,作为notifiable_id存入数据库,但当前User模型的主键配置与实际表结构不匹配,导致无法正确获取主键值。

解决方案

1. 修正User模型的主键配置

如果你的users表主键是大写的ID(而非Laravel默认的小写id),必须在User模型中显式声明主键字段:

class User extends Model
{
    // 指定表主键字段名
    protected $primaryKey = 'ID';
    
    // 若主键不是自增整数类型(比如字符串/UUID),需额外添加:
    // public $incrementing = false;
}

2. 确保查询返回完整的模型属性(可选优化)

控制器中使用select()仅选取了ID和USERNAME,虽然理论上满足主键读取需求,但如果后续有依赖模型其他属性的操作,建议改为获取user表的全部字段:

$admins = User::join('userroleas UR', 'UR.user_id', 'user.ID')
   ->whereIn('UR.role_id', [31, 114])
   ->select('user.*') // 获取user表全部字段
   ->get();

验证

修改后重新执行通知发送逻辑,Laravel将能正确读取User模型的ID值,作为notifiable_id插入到notifications表中,解决约束报错问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 04:55:29