所以我有3张桌子
- 商务 - ID -地址 - ID -business_address - business_id - address_id
现在,当我进入视图业务页面时,我将业务表中的business-> id作为$ id传递:
public function displayBusiness($id) {
$business = Business::find($id);
$address = Address::find($id);
此时此功能完全正常,但如果地址有不同的ID,该怎么办?
这样:
-Business
- id = 1
-Address
- id = 2
-business_address
- business_id = 1
- address_id = 2
那么如何修改它以便当业务表= 1中的id进入business_address并找到匹配的地址id并带回与之匹配的记录
答案 0 :(得分:2)
你应该拥有的是一种关系。因此,在您的Business
模型中,您需要添加以下内容。
public function addresses() {
return $this->belongsToMany(Address::class, 'business_address', 'address_id', 'business_id');
}
然后在您的Address
模型中,您将拥有以下内容。
public function addresses() {
return $this->belongsToMany(Business::class, 'business_address', 'business_id', 'address_id');
}
有了这个,您现在可以执行以下操作。
public function displayBusiness($id) {
$business = Business::with('addresses')->find($id);
}
然后您通过$business->addresses
访问地址。
这完全基于您目前拥有的内容,所以我假设一个Address
可以属于多个Business
。如果不是这种情况,您需要重构您的关系和数据库,因为不需要数据透视表。