最近工作写接口的时候,遇到这样一种情况:
在“客户表”中存在省份ID,市区ID,这两个字段对应的都是“地区表”的ID字段。其中在“地区表”中市区和省份通过parent_id字段相关联。
需求:通过一条sql语句,根据市区ID查找出客户数据,同时,省份名称和市区名称都需要。
Yii2.0实现:
$list = Kh::find() ->select(['kh.name', 'dq.name as cityname', 'dq_copy.name as province_name']) ->join('LEFT JOIN', 'dq', 'kh.cityid = dq.id') ->join('LEFT JOIN', 'dq as dq_copy', 'dq_copy.id = dq.parent_id') ->asArray()->all();
上面代码是在建立了对应表的model情况下实现的。查找出客户表的name,地区表的省份名称和城市名称。
这句代码用到了自己left join自己,很巧妙。
通过以上方法可以实现一条sql语句连接自己查询,查找出同一张表的多个字段。