Laravel DB类两表第二个表关联条件多条时显示一条
就是以第一个表为主表,查询出的数据以第一个表为准。
我们假设有两个表,A表,B表
A表的结构数据如下
id | name |
---|---|
1 | 张三 |
2 | 李四 |
3 | 赵五 |
B表的结构数据如下
id | headimg | uid |
---|---|---|
1 | a.jpg | 1 |
2 | b.jpg | 1 |
3 | c.jpg | 2 |
3 | c.jpg | 2 |
3 | c.jpg | 2 |
其中B表中的uid与A表中的id关联。
我们现在查询A表数据的头像,但是我们只想取出一条对应的话怎么做呢?
在laravel中用DB类可以这样写
$res=DB::table('A as a')->select('*')
->leftJoin(DB::raw('(select uid,headimg from B group by uid) as b'),'b.uid','=','a.id')
->get();
原生语句
select * from `A` as `a` left join (select uid,headimg from B group by uid) as b on `b`.`uid` = `a`.`id`