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
相关产品推荐
相关产品推荐

