2017-12-21 11 views
-1

Ich habe die folgenden Tabellen in meiner db:

Verbindungen
id
OWNER_ID
Laravel - Eloquent

Besitzer
id
ROOM_ID

Zimmer
id
room_number

ich durch die owner_id zu room_number von meiner Verbindungen Tabelle beziehen möchten. Ich habe versucht mit hasManyThrough-Beziehung, aber es funktioniert in der umgekehrten Weise (von Zimmertabelle zu Felder in Verbindungstabelle). Wie sollte ich Beziehungen aufbauen und welche Art von Beziehung sollte ich in meine App \ Connections einfügen?

+0

Was genau haben Sie (ID von was?) Und was genau möchten Sie bekommen? –

+0

Ich habe die Tabellen oben mit Beziehungen zwischen ihnen. So hat die Verbindungstabelle Zugriff auf die Eigentümer-Tabelle und die Eigentümer-Tabelle hat Zugriff auf die Zimmer-Tabelle. Aber jetzt möchte ich room_number in einer Verbindungstabelle sein. Z.B. Verbindungen-> Eigentümer-> Zimmer-> Zimmernummer (aber ich weiß, dass es auf diese Weise nicht funktioniert) – Patryk

Antwort

0

ich habe es. Ich hatte die folgenden Beziehungen in Apps zu setzen:
Connections.php

public function owners() 
{ 
    return $this->belongsTo('App\Owners', 'owner_id'); 
} 

Owners.php

public function connections() 
{ 
    return $this->hasMany('App\Connections'); 
} 

public function rooms() 
{ 
    return $this->belongsTo('App\Rooms', 'room_id'); 
} 

Rooms.php

public function owners() 
{ 
    return $this->hasMany('App\Owners'); 
} 

Und jetzt, wenn ich Zeile hinzugefügt unten an Meine ConnectionsController.php

$connections = Connections::with('owners')->paginate(5); 

Ich kann in meinem index.blade Schreiben verweisen:

@foreach($connections as $element) 
    {{ $element->owners->rooms->room_number }} 
@endforeach 

@AlexeyMezenin Sorry für die Aufregung.

0

Wenn ich richtig verstanden habe, haben Sie Verbindungs-IDs und Sie möchten Raumnummern erhalten.

Zuerst definieren Sie Beziehungen. In Room Modell:

public function owners() 
{ 
    return $this->hasMany(Owner::class); 
} 

In Owner Modell:

public function connections(); 
{ 
    return $this->hasMany(Connection::class); 
} 

Zur Zimmernummern von Verbindungs-IDs zu erhalten:

$connectionIds = [12, 15, 20]; 
$roomNumbers = Room::whereHas('owners.connections', function($q) use($connectionIds) { 
     $q->whereIn('id', $connectionIds); 
    })->pluck('room_number'); 
+1

@Patryk B Ich hatte meinen Beitrag gelöscht, da dies Ihre Frage beantworten sollte. – HCK

+0

@AlexeyMezenin Ich bin mir ziemlich sicher, dass Ihre Lösung funktioniert, aber ich habe die Idee unten, die meiner Meinung nach Raumnummer einfacher machen können. – Patryk