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

Laravel8多对多关联仅识别主键id 无法使用自定义vcode字段关联问题

解决方案

你只需要补全belongsToMany方法的最后两个参数,显式指定两个模型侧用于关联的字段为vcode即可。Laravel多对多关联默认会使用模型的主键(默认是id)进行匹配,你没有显式指定关联字段时就会出现你遇到的匹配错误。

1. 修改Faculty模型的departments关联

public function departments()
{
    // 第5个参数是当前Faculty模型用于关联的字段,第6个参数是Department模型用于关联的字段
    return $this->belongsToMany(Department::class, 'faculty_departments','faculty_vcode','department_vcode', 'vcode', 'vcode');
} 

2. 修改Department模型的faculties关联

public function faculties()
{
    return $this->belongsToMany(Faculty::class, 'faculty_departments', 'department_vcode','faculty_vcode', 'vcode', 'vcode');
}

修改完成后再次执行查询,生成的SQL关联条件会自动替换为departments.vcode = faculty_departments.department_vcode,符合预期。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 06:24:03