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

Laravel 9自定义列名使用morphTo关联报错问题求助

解决Laravel 9多态关联自定义列名不生效的问题

问题出在父模型的关联配置未同步自定义列名:当你在子模型(Upload)的morphTo方法里指定了自定义的类型列(kind)和外键列(item_id),父模型(Product)的morphMany关联也需要明确声明这两个自定义列,否则Laravel会默认使用{关联名}_id和{关联名}_type作为列名,也就是这里的uploadable_id和uploadable_type,导致找不到字段报错。

修改Product模型的documents关联方法,补充指定自定义列参数:

public function documents()
{
    return $this->morphMany(Upload::class, 'uploadable', 'kind', 'item_id');
}

morphMany方法的参数顺序为:

  • 关联模型类
  • 关联名称(要和子模型morphTo的第一个参数一致)
  • 多态类型列名(对应uploads表的kind)
  • 多态外键列名(对应uploads表的item_id)

这样配置后,查询$model->documents时,Laravel就会使用正确的列名构建SQL条件,不会再出现列找不到的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 09:16:34