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

Laravel中多次关联同一baseinfos表分别获取bas_value的实现方法

问题原因

你遇到的1066 Not unique报错核心有两个:

  • 两次关联baseinfos表时没有指定不同别名,SQL引擎无法区分两个名称相同的关联表
  • 最终查询的两个bas_value字段没有自定义别名,就算关联成功也会出现后查询的值覆盖前一个的问题

实现代码

修改后的查询写法如下:

$records = DB::table('members')
    ->where('mys_olp_id', 4)
    ->join('students', 'members.mbr_usr_id', '=', 'students.std_mbr_id')
    // 第一次关联baseinfos作为学历表,别名student_degree
    ->join('baseinfos as student_degree', 'students.std_degree_id', '=', 'student_degree.bas_id')
    // 第二次关联baseinfos作为性别表,别名member_gender
    ->join('baseinfos as member_gender', 'members.mbr_gender_id', '=', 'member_gender.bas_id')
    // 分别取两个别名表的bas_value,同时给字段设置别名避免冲突
    ->select('student_degree.bas_value as degree', 'member_gender.bas_value as gender')
    ->get()
    ->toArray();

补充说明

  • 关联同一张表多次时,必须通过as 自定义别名给每一次关联的表设置唯一标识
  • 同名字段必须设置独立的查询别名,才能在返回结果中正常获取两个不同的值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 20:15:03