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

Laravel设置自定义主键后更新数据报Unknown column 'id'错误如何解决?

问题原因

你遇到的SQL错误并非模型更新操作直接生成,而是验证环节触发的:

  • 你在$this->validate()中配置了slug字段的unique唯一性校验规则,Laravel的unique验证规则默认使用id作为主键字段排除当前正在更新的记录,不会自动读取模型中配置的$primaryKey属性,因此生成了包含id <> 3的查询语句。
解决方案

修改你的slug字段验证规则,手动指定自定义主键字段即可:
原来的验证规则大概率是以下写法:

'slug' => 'required|unique:pages,slug,'.$this->modelId

修改为指定第四个参数为你的自定义主键pages_id:

'slug' => 'required|unique:pages,slug,'.$this->modelId.',pages_id'
可选检查项(非必须,按需配置)

如果你的pages_id不是自增的整数类型,还需要在Page模型中补充以下配置:

// 如果是非自增主键
public $incrementing = false;
// 如果是字符串类型主键
protected $keyType = 'string';

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 11:45:03