2017-12-22 17 views
0

Ich versuche zu verstehen, wenn in Laravel 5.5 gibt es eine Methode, die ein Modell mit einem anderen Schlüssel mit einem anderen verknüpft, kann ich das Ergebnis der vollständigen Verknüpfung der Attribute von beiden erhalten Modelle. Ich möchte vermeiden, zwei Modelle zurückzugeben und sie zusammenzuführen.Laravel 5.5 Modellbeziehung in JSON

Unter dem Code meines Modells:

class Event extends Model { 
    public function location(){ 
     return $this->hasOne('App\Location'); 
    } 
} 

In der Steuerung erhalte ich die Ortsinformation des jeweiligen Ereignisses, aber im Ergebnis würde Ich mag Informationen sowohl Event- und Location sehen.

In der Steuerung Wenn ich das Modell mit dem ORM nennen:

$event = Event::where('name',$name)->first()->location; 

    $model=$eventLocation->getModel(); 
    return $model; 

und erhalten diese json mit

{"id":12,"created_at":null,"updated_at":null,"name":"location_test","event_id":"1"} 

, dass nur die Attribute der Lage enthält und nicht für die Veranstaltung! Wie kann ich beides zeigen?

dank

Antwort

1

Versuchen mit:

$event = Event::with('location')->where('name', $name)->first(); 
$location = $event->location; 

Auf diese Weise können Sie das Ereignis selbst und die komplette zugehörige Position als location Feld zu bekommen.

Siehe Abschnitt Eager Loading in der Dokumentation.

+0

ich nur die Informationen über die Lage zu erhalten, Nichtigkeiten über die Veranstaltung ... – user8958651

+0

Die Veranstaltung innen 'event' $ Variable haben Sie eine Immobilie 'location', um darauf zuzugreifen. Sie können alle Dinge mit ['Collection'] (https://laravel.com/docs/5.5/collections) Methoden wie' toJson' oder 'toArray' in' $ event' Sammlung, wie '$ event-> toJson () '. –

0

Try this:

$event = Event::with('location')->where('name', $name)->first(); 

return $event->toJson(); 

Sie Zugriff auf Ihre Veranstaltung haben mit data.location

+0

Großartig, es funktioniert – user8958651

0

Sie verwenden können:

$event = Event::with('location')->where('name',$name)->first(); 

oder:

$event = Event::where('name',$name)->first(); 
$event->load('location'); 

Dann, wenn Sie gib einfach mod zurück el oder rufen $event->toJson() Sie werden Ihre location Beziehung geladen haben.

Wenn Sie Details über das Laden von Beziehungen erhalten möchten, können Sie bei laravel eager loading using with() vs load() after creating the parent model aussehen