三个表的关联中,如何通过第一个表拿到第三个表的数据呢
请教,以下场景,如何从第一个表,拿到第三个表的数据?请教,以下场景,如何从第一个表,拿到第三个表的数据?
我的表是这样的
客户模型 customer
跟进模型 event
联系人模型 contact
一个客户有
多个
跟进。
一个跟进有一个
联系人。
客户表(customers)设计
id | name |
---|---|
1 | 腾讯 |
2 | 阿里 |
跟进表(events)设计
id | content(内容) | customer_id(所属客户id) | contact_id(所属联系人id) |
---|---|---|---|
1 | 跟进内容XXXXXXXX | 2 | 3 |
2 | 跟进内容XXXXXXXX | 1 | 2 |
3 | 跟进内容XXXXXXXX | 1 | 1 |
4 | 跟进内容XXXXXXXX | 3 | 1 |
联系人表(contacts)设计
id | name |
---|---|
1 | 张三 |
2 | 李四 |
现在需要实现的效果是
在当前客户页面 (已知客户id),显示所有跟进,以及这个跟进关联的联系人的name
客户名称:XXXX
跟进内容1,联系人:张三
跟进内容2,联系人:李四
跟进内容3,联系人:王五
我的关联是这么写的
$customer = Customer::with('events.contact')->findorFail($id);
'events' => $customer->events()->get()
在视图页面是这么调用跟进的
@foreach ($events as $event)
{{$event['content']}} //(遍历出来每条跟进内容,现在不知道怎么在每条跟进内容后面,把这条跟进的联系人的名称显示出来),联系人的id是 {{$event['contact_id']}}
//笨办法:
{{contact::find( $event['contact_id'] )->name}}
//但是如果这么写的话,每条跟进的联系人都会增加一次查询。不知道怎么写可以减少查询
@endforeach
请问如果使用关联,关联的写法怎么写才能减少查询呢?
乌鸦嘴社区 wyz.xyz 来玩。
已解决,这个案例其实不能用三个表的思路去思考。 可以当成两两关联。 B与A一对多关联。 B与C一对一关联。 虽然是三个表,但如果用三个表的思路去琢磨,很容易掉进坑里。