2017-06-16 9 views
0

Ich habe viele, viele Beziehungen und hier ist, was ich tue:Laravel viele zu viele Abrufen von Daten

In url Ich bin vorbei Unternehmen ID, die in der Business-Tabelle ist:

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

Dann ist diese Funktion 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')); 
} 

Aber das Problem ist, die Linien, die kommentiert out sind, bringen Ergebnisse zurück, die Geschäfts-ID entsprechen, die nicht immer der Fall ist, weil manchmal Geschäft id = 1 und Adresse id = 4 aber dieser Code wird zurück Adresse ID = 1

Also was ich tun möchte, ist auf meine Junction-Tabelle, die business_id und address_id und verwenden Sie $ id, um business_id sowie address_id, die diese ID entspricht zu finden.

Rückholgeschäft gibt mir []

Also, was ich will so etwas wie dieses:

Lassen Sie uns $ id = 1 in business_address gehen nehmen und business_id finden, die 1 entspricht; Auch finden address_id dass Spiele gefunden business_id, Tabelle passende ID Geschäft Holen Sie zurück und kompakt die Ergebnisse, die

meine Modelle id gleiche gilt für Adresstabelle entsprechen:

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'); 
} 

Antwort

0

ich jedes Geschäft erraten hat viele Kleider.
1. dies zurückkehren würde das Geschäft mit der ID von $id

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

2. Dies Alle Adressen passend zu diesem Geschäft zurückkommen würde

$address = $business->addresses; 

Bitte beachten Sie, dass die $address eine Sammlung zurückkehren würde keine einzelnes Objekt
Lassen Sie mich wissen, wenn dies hilft