Laravel使用QueryBuilder获取多外键关联的spec表对应文本值
错误原因
你当前写法报错是因为多次关联spec表但没有为每次关联设置独立别名,数据库无法区分不同关联的spec表,触发表名冲突错误。
正确实现代码
DB::table('contracts as c') ->join('spec as s1', 's1.id', '=', 'c.spec1') ->join('spec as s2', 's2.id', '=', 'c.spec2') ->join('spec as s3', 's3.id', '=', 'c.spec3') ->select( 'c.id as contract.id', 's1.text as spec1', 's2.text as spec2', 's3.text as spec3' ) ->get();
补充说明
如果contracts表中的spec1/spec2/spec3字段允许为空,且你需要保留关联不到对应spec记录的合约数据,可以将join替换为leftJoin避免数据丢失。
内容的提问来源于stack exchange,提问作者Patas
相关产品推荐
相关产品推荐

