2017-06-16 70 views
0

我有很多很多的关系,这里是我在做什么:laravel多对多检索数据

在URL我传递企业id,这将是在业务表:

@foreach ($business as $businesses) 
     <a target="_blank" href="{{ url('business/' . $businesses->id) }}"> {{($businesses->name) }} 
     </a> @endforeach 

,则此函数RAN:

public function displayBusiness($id) { 
     $business = Business::find($id)->addresses; 
     //return $business; 
     //$address = Address::find($id); 
     $session = session()->put('key', $id); 
     $gallery = Gallery::where('business_id', $id)->get(); 
     $location = Location::where('business_id', $id)->get(); 
     $review = Review::where('business_id', $id)->get(); 
      return view('displayBusiness', compact('business', 'address', 'gallery', 'location', 'review')); 
} 

但问题是,被注释掉,带回满足业务ID是不总是这样的结果行,因为有时企业ID = 1个地址ID = 4但这个代码将带回地址id = 1

所以我想要做的是看我的交界表,有business_id和address_id,并使用$ id找到business_id以及address_id匹配该id。

回报的业务给了我[]

所以,我想是这样的:

假设$ ID = 1 走进business_address并找到匹配1 business_id; 还发现ADDRESS_ID匹配business_id发现, 带回ID匹配的业务表和紧凑的匹配ID 同样,对于地址表

我的模型得出的结果:

Address.php

public function businesses() { 
    return $this->belongsToMany(Business::class, 'business_address', 'business_id', 'address_id'); 
} 

Business.php

public function addresses() { 
    return $this->belongsToMany(Address::class, 'business_address', 'address_id', 'business_id'); 
} 

回答

0

我猜每个企业都有很多ddresses。
1.将返回业务的$id

$business = Business::find($id); 

2号这将返回所有的地址相匹配,企业

$address = $business->addresses; 

请注意:$address将返回集合不是单个物体
让我知道这是否有帮助