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

